Python NLTK: 搜索单词的出现

2024-09-30 22:20:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我用棕色语料库”布朗。文字()”给了我116192个单词的列表。在

现在我想找出“have”这个词的任何出现,所以每当在语料库中出现“has”、“had”、“have not”等等。我想做点什么(可以把它们推到数组中,可以是一个计数器,也可以是其他的东西。在

编辑:请注意,这个问题是关于查找匹配单词的。如果我搜索“have”,我需要一种方法将其与“have not”或“had”匹配,因此.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"]

但问题是:

^{pr2}$

Tags: havenot单词word文字语料库lemmatize棕色
1条回答
网友
1楼 · 发布于 2024-09-30 22:20:29

在尝试匹配单词之前,您可能需要做一些预处理。所以“有”或“还没有”最终会变成“有”。在

我建议您同时查看词干或柠檬化:

NLTK的Wordnet Lemmatizer(我的最爱之一):http://www.nltk.org/_modules/nltk/stem/wordnet.html

NLTK的词干分析器:http://www.nltk.org/howto/stem.html

注意:为了使lemmatizer能够很好地处理动词,您必须指定它们实际上是动词。在

nltk.stem.WordNetLemmatizer().lemmatize('having', 'v')

希望这有帮助!在

相关问题 更多 >