簡體   English   中英

Python的NLTK字頻

[英]Python's NLTK word frequency in sents

抱歉,這對我來說很困難:我有一個基本頻率為某些文本的代碼,它表示“ most_common”模式下的輸出。 但是它用語言表示。

def sym(senten):
    stopwords = nltk.corpus.stopwords.words("english")
    V = [",", ".", "'", "(", ")", '"', "'", ":", "it", "may", "I", "the", "but", "two", "this", "since", "for", "whether", "and", "?", "if", "even", "Mr.", "also", "at", "p."]
    content = [w for w in senten if w not in stopwords and w not in V]
    fd = nltk.FreqDist(content)
    fdc = fd.most_common(75)
    return fdc

為了進行進一步的分析,我需要頻率代碼,該頻率代碼在輸出(句子)中代表我。 因此,輸出必須顯示我的郵件,並根據其中的單詞頻率來選擇。

我有一些想法可以通過“制表”來實現。 有一個代碼(例如):

S= ["proposition", "modus", "logic", "2"] #The most frequent words( for example)
cfd = nltk.ConditionalFreqDist(
    (senten, S)
    for senten in senten
    for S in senten)
print cfd.tabulate(conditions = senten,
             samples=S)

它是可行的,但是關於沒有頻繁單詞的句子,有太多毫無意義的數據。

我感謝您的想法,這可以解決我的問題。

分兩步完成。 您已經有找到最常用單詞的代碼,這很好。 現在建立一個索引(一個字典),該索引將告訴您每個單詞包含哪些句子。 因此,該詞典中的鍵應該是單詞,而值將是整個句子的列表-基本上與您嘗試的相反。 您將多次添加每個句子(不用擔心它實際上不會被復制,因此效率很高)。

這本詞典不需要計算任何內容-您只需查找單詞即可。 因此,為方便起見,您可以使用普通dict ,也可以使用collections.defaultdict 最后一步將是使用當前函數獲取最常用單詞的列表,對於每個此類單詞,您只需請求包含該單詞的所有句子即可。 足夠清楚嗎?

暫無
暫無

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

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