【问题标题】:Python NLTK: search for occurrence of a wordPython NLTK:搜索单词的出现
【发布时间】:2018-03-01 20:34:20
【问题描述】:

我使用棕色语料库“brown.words()”,它为我提供了 1161192 个单词的列表。

现在我想找到任何出现的单词“have”,所以只要在语料库中有一个“has”、“had”、“haven't”等。我想做点什么(可以将它们推入一个数组,可以是一个计数器,也可以是别的东西。

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

【问题讨论】:

标签: python nltk corpus stemming lemmatization


【解决方案1】:

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

我建议您同时查看词干提取或词形还原:

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')

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多