簡體   English   中英

在nltk中使用FreqDist匹配多個單詞

[英]Matching multiple words with FreqDist in nltk

import nltk
from nltk.tokenize import word_tokenize

txt = "finding a common place isn't commonly available among commoners place"

fd = nltk.FreqDist()

for w in word_tokenize(a.lower()):
    fd[w] += 1

我上面的腳本工作正常。 如果我做fd['place']我得到2,如果我鍵入fd['common']我得到1。

是否可以輸入類似於fd['common*'] (無效)以獲取3個匹配項,甚至可能是這些匹配項的列表? 這三場比賽將是(common, commonly, commoners)

我假設它與regex但不確定如何用FreqDist()

如果沒有,是否還有其他軟件包可以做到這一點?

FreqDist只是一種字典,並且字典鍵只能通過完全匹配來工作。

要將正則表達式用於類似這樣的事情,您需要用困難的方式做到:遍歷所有條目並累加匹配單詞的計數。 當然,這需要掃描整個列表,因此如果列表很大,掃描速度會很慢,您需要做很多事情。

如果僅在通過前綴匹配之后,請使用稱為“前綴樹”或“ trie”的數據結構。 您可能會猜到它在做什么。 一個簡單的解決方法是在FreqDist記錄您看到的每個單詞的每個前綴的計數(因此,不僅限於完整的單詞)。

利用第3.4章,這是我最終要做的

import re

for w in fd:
    if re.search('common', w):
        print(w,fd[w])

暫無
暫無

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

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