Python NLTK:搜索单词的出现
Python NLTK: search for occurrence of a word
我使用棕色语料库 "brown.words()",它给了我一个包含 1161192 个单词的列表。
现在我想找到单词 "have" 的任何出现,所以只要在语料库中有 "has"、"had"、"haven't" 等。我想做点什么(可能是将它们推入一个数组,可能是一个计数器,可能是其他东西。
编辑:请注意,这道题是关于寻找匹配词的。如果我 搜索 "have" 我想要一种方法将它匹配到 "haven't" 或 "had",因此 .count() 不会解决这个问题 作为它对匹配任何东西都没有帮助。
如果 stemming/lemmatization 可行,我将使用的示例代码:
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"
在尝试匹配单词之前,您可能需要做一些 pre-processing。所以 "has" 或 "haven't" 最终变成 "transformed" 到 "have"。
我建议您看一下词干提取或词形还原:
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')
希望对您有所帮助!
我使用棕色语料库 "brown.words()",它给了我一个包含 1161192 个单词的列表。
现在我想找到单词 "have" 的任何出现,所以只要在语料库中有 "has"、"had"、"haven't" 等。我想做点什么(可能是将它们推入一个数组,可能是一个计数器,可能是其他东西。
编辑:请注意,这道题是关于寻找匹配词的。如果我 搜索 "have" 我想要一种方法将它匹配到 "haven't" 或 "had",因此 .count() 不会解决这个问题 作为它对匹配任何东西都没有帮助。
如果 stemming/lemmatization 可行,我将使用的示例代码:
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"
在尝试匹配单词之前,您可能需要做一些 pre-processing。所以 "has" 或 "haven't" 最终变成 "transformed" 到 "have"。
我建议您看一下词干提取或词形还原:
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')
希望对您有所帮助!