NLTK WordNet Lemmatizer - 如何删除未知单词?
NLTK WordNet Lemmatizer - How to remove the unknown words?
我正在尝试在推文上使用 NLTK WordNet Lemmatizer。
我想删除所有在 WordNet 中找不到的词(twitter 句柄等),但 WordNetLemmatizer.lemmatize() 没有任何反馈。如果找不到它,它只是returns这个词不变。
有没有办法检查一个词是否在 WordNet 中找到?
或者是否有更好的方法从字符串中删除 "proper english words" 以外的任何内容?
您可以查看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、用户名、链接、转推等。有很多论文可以从中收集策略。
我正在尝试在推文上使用 NLTK WordNet Lemmatizer。
我想删除所有在 WordNet 中找不到的词(twitter 句柄等),但 WordNetLemmatizer.lemmatize() 没有任何反馈。如果找不到它,它只是returns这个词不变。
有没有办法检查一个词是否在 WordNet 中找到?
或者是否有更好的方法从字符串中删除 "proper english words" 以外的任何内容?
您可以查看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、用户名、链接、转推等。有很多论文可以从中收集策略。