簡體   English   中英

Python NLTK:搜索單詞的出現

[英]Python NLTK: search for occurrence of a word

我使用棕色語料庫“brown.words()”,它給了我 1161192 個單詞的列表。

現在我想找到“have”這個詞的任何出現,所以無論何時在語料庫中有“has”、“had”、“haven't”等。 我想做點什么(可能是將它們推入一個數組,可能是一個計數器,也可能是其他東西。

編輯:請注意,這個問題是關於尋找匹配的詞 如果我搜索“have”,我想要一種將它與“have't”或“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"]

但問題是:

for word in brown.words():
    lemma = lmtzr.lemmatize(word)
    # if word is "having" lemma also is "having" instead of "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')

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM