moos / wordpos

Part-of-speech utilities for node.js based on the WordNet database.
478 stars 41 forks source link

Unable to open c:\...\data.verb #6

Closed manchuwook closed 10 years ago

manchuwook commented 10 years ago
Unable to open c:\dev\...\node_modules\WNdb\dict\data.verb
Unable to open c:\dev\...\node_modules\WNdb\dict\data.verb
Unable to open c:\dev\....\node_modules\WNdb\dict\data.noun
Unable to open c:\dev\....\node_modules\WNdb\dict\data.noun
Unable to open c:\dev\....\node_modules\WNdb\dict\data.noun
Unable to open c:\dev\....\node_modules\WNdb\dict\data.noun
Unable to open c:\dev\....\node_modules\WNdb\dict\data.noun
Unable to open c:\dev\....\node_modules\WNdb\dict\data.noun
Unable to open c:\dev\....\node_modules\WNdb\dict\data.verb
Unable to open c:\dev\...\node_modules\WNdb\dict\data.verb

Any suggestions on how to wait before doing the next word in the array?

moos commented 10 years ago

Not sure what you mean. Adding a code snippet might help.

manchuwook commented 10 years ago
wordnet.list(function (err, list) {
    var filtered = Enumerable.from(list).where(function (word) {
            return word.length > 1 && cmudict.get(word) != null;
        }).toArray();
    console.log('Getting [' + filtered.length + '] words');

    for (i = filtered.length - 1; i >= 0; i--) {
        wordpos.lookup(filtered[i], console.log);
        filtered.splice(i, 1);
    }
});
moos commented 10 years ago

First confirm those files are there and you had no installation issues.

Second run the CLI making sure it is working. From your wordpos dir:

$ bin/wordpos-cli.js  def  apple pear
apple
  n: native Eurasian tree widely cultivated in many varieties for its firm round
ed edible fruits
  n: fruit with red or yellow or green skin and sweet to tart crisp whitish fles
h

pear
  n: Old World tree having sweet gritty-textured juicy fruit; widely cultivated
in many varieties
  n: sweet juicy gritty-textured fruit available in many varieties

I don't see anything wrong with the code. It should work as you have it, unless you're running into issues if filtered.length is very large.

About waiting before doing the next lookup, basically you want to do the next lookup in the callback function or use a promises library like https://github.com/kriskowal/q, for example.

manchuwook commented 10 years ago

Filtered length ls 34,566; very large.

moos commented 10 years ago

Basically you're asking your system to open and search 4 multi-megabyte files 34,566 times simultaneously! Needless to say neither this library nor your computer (unless it's an IBM Watson) was meant for that.

manchuwook commented 10 years ago

That's why I was asking for a suggestion and not actually wanting to submit it as a bug. I don't want to open them all at once and then check. I just want to open, check, close and move on to the next word. I don't care if it doesn't happen simultaneously.

moos commented 10 years ago

Fair enough -- my earlier comment about doing next lookup in the callback or using promises holds.