python - NLTK WordNet Lemmatizer - 如何删除未知单词?

标签 python nltk wordnet lemmatization

我正在尝试在推文上使用 NLTK WordNet Lemmatizer。

我想删除在 WordNet 中找不到的所有单词(twitter 句柄等),但 WordNetLemmatizer.lemmatize() 没有反馈。如果找不到该单词,它只会原封不动地返回该单词。

有没有办法检查 WordNet 中是否找到某个单词?

或者有没有更好的方法从字符串中删除除“正确的英语单词”之外的任何内容?

最佳答案

您可以使用wordnet.synsets(token)进行检查。请务必处理标点符号,然后检查它是否在列表中。这是一个例子:

from nltk.tokenize import WordPunctTokenizer
from nltk.corpus import wordnet

my_list_of_strings = []  # populate list before using

wpt = WordPunctTokenizer()
only_recognized_words = []

for s in my_list_of_strings:
    tokens = wpt.tokenize(s)
    if tokens:  # check if empty string
        for t in tokens:
            if wordnet.synsets(t):
                only_recognized_words.append(t)  # only keep recognized words

但是您确实应该创建一些自定义逻辑来处理 Twitter 数据,特别是处理哈希标签、@replies、用户名、链接、转发等。有很多论文提供了可供收集的策略。

关于python - NLTK WordNet Lemmatizer - 如何删除未知单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33611766/

相关文章:

python - 使用ast.literal_eval()清理数据时出现语法错误

python - 为 500 万元素目录中的每个元素寻找 3D 欧几里德空间中的 10 个最近点

python - 使用 NLTK 和 WordNet;如何将简单时态动词转换为现在、过去或过去分词形式?

java - 为什么 Java Wordnet 相似性在第二次调用时崩溃?

java - 使用 EXTJWNL 编辑 Wordnet 词典

python - 如何根据模型实例中的值有条件地更改 django 管理表单?

python - 在 Python 中将整数转换为 2 字节的十六进制值

python - 在 python 中创建词汇表

python - 如何使用 NLTK 从句子中提取特定信息

python - 属性错误: 'WordNetCorpusReader' object has no attribute 'get_synsets_from_word'