拥有一个单词库来检查单一语言是否会非常低效?

问题描述

我正在用 Python 在我下载的 YouTube 评论上做一些 NLP,我只想处理英文的。到目前为止,我已经尝试了不同的库(许多在 this 线程中讨论过)并且它适用于较长的字符串,但许多库经常遇到较短的一两个字词的问题。我的问题是下载英语单词词典并检查每个简短的、有问题的评论是否会非常低效,显然会丢弃不匹配的评论

我可以预见拼写错误或出现在英语和外语中的单词等问题,但目前我更关心速度,因为我有大约 6800 万条评论要处理。

解决方法

尝试使用 NLTK 的语料库。 Nltk 是 python 中的一个外部模块,具有多个用于自然语言处理的语料库。具体来说,您感兴趣的是以下内容:

from nltk.corpus import words
eng_words = words.words("en")

Words.words("en") 是一个包含近 236,000 个英语单词的列表。通过将其转换为一组,将真正加快您的文字处理速度。你可以用这个语料库测试你的单词,如果它们存在就意味着它们是英语单词:

string = "I loved stack overflow so much. Mary had a little lamb"

set_words = set(words.words("en"))

for word in string.split():
    if word in set_words:
        print(word) 

输出

I loved stack overflow so much. Mary had a little lamb

如果它是您正在寻找的字典(具有适当的定义),我已经使用了@Tushars 实现。它制作精巧,可供所有人使用。使用的格式是:

{WORD: {'MEANINGS':{},'ANTONYMS':[...],'SYNONYMS':[...]}}

和'MEANINGS'字典被安排为

'MEANINGS':{sense_num_1:[TYPE_1,MEANING_1,CONTEXT_1,EXAMPLES],sense_num_2:[TYPE_2,MEANING_2,CONTEXT_2,EXAMPLES] and so on...}

该文件在此处可用:https://www.dropbox.com/s/qjdgnf6npiqymgs/data.7z?dl=1 可在此处找到更多详细信息:English JSON Dictionary with word,word type and definition