2

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

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

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

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

4

1 回答 1

4

您可以使用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、用户名、链接、转发等。有很多论文可以收集策略。

于 2015-11-09T15:01:02.837 回答