我使用棕色语料库“brown.words()”,它给出了1161192个单词的列表。
现在我想找到任何出现的“have”这个词,所以每当在语料库中都有“has”,“have”,“have not”等。我想做点什么(可能是把它们推到一个数组中,可能是一个计数器,也可能是别的。
修改:请注意,此问题与找到匹配的字有关。如果我搜索“有”,我想要一种方法将其匹配为“没有”或“有”,因此.count()无法解决此问题,因为它无法帮助匹配任何内容
我将使用示例代码,以防词干/词形还原工作:
def findWordFamily(findWord):
wordFamily = []
lmtzr = WordNetLemmatizer()
findWord = lmtzr.lemmatize(findWord)
for word in brown.words():
lemma = lmtzr.lemmatize(word)
if lemma == findWord:
wordFamily.append(word)
return wordFamily
print(findWordFamily("have"))
# ["have", "have", "had", "having","haven't", "having"]
但问题在于:
for word in brown.words():
lemma = lmtzr.lemmatize(word)
# if word is "having" lemma also is "having" instead of "have"
答案 0 :(得分:0)
在尝试匹配单词之前,您可能需要进行一些预处理。所以“有”或“没有”最终“转变”为“有”。
我建议你看一下词干或词形化:
NLTK的Wordnet Lemmatizer(我的最爱之一):http://www.nltk.org/_modules/nltk/stem/wordnet.html
NLTK的词干:http://www.nltk.org/howto/stem.html
注意:为了使变形词能够与动词一起使用,你必须指明它们实际上是动词。
nltk.stem.WordNetLemmatizer().lemmatize('having', 'v')
希望这有帮助!