1. 程式人生 > >分詞2

分詞2

rds one cati 線程 卡方 實現 col 單位 big

s = "線程是程序執行時的最小單位,它是進程的一個執行流,\
是CPU調度和分派的基本單位,一個進程可以由很多個線程組成,\
線程間共享進程的所有資源,每個線程有自己的堆棧和局部變量。\
線程由CPU獨立調度執行,在多CPU環境下就允許多個線程同時運行。\
同樣多線程也可以實現並發操作,每個請求分配一個線程來處理。"
print(s)

def word_one(text):
return dict([(word,True) for word in text ])
print(‘單詞分詞‘,word_one(s))

import nltk
from nltk.collocations import BigramCollocationFinder
from nltk.metrics import BigramAssocMeasures


def word_two(words, score_fn=BigramAssocMeasures.chi_sq, n=1000):
bigram_finder = BigramCollocationFinder.from_words(words) # 把文本變成雙詞搭配的形式
bigrams = bigram_finder.nbest(score_fn, n) # 使用卡方統計的方法,選擇排名前1000的雙詞
newBigrams = [u + v for (u, v) in bigrams]
return word_one(newBigrams)
print(‘兩詞分詞‘,word_two(s, score_fn=BigramAssocMeasures.chi_sq, n=1000))


def word_total(words, score_fn=BigramAssocMeasures.chi_sq, n=1000):
bigram_finder = BigramCollocationFinder.from_words(words)
bigrams = bigram_finder.nbest(score_fn, n)
newBigrams = [u + v for (u, v) in bigrams]
a = word_one(words)
b = word_one(newBigrams)
a.update(b) # 把字典b合並到字典a中
return a
print(‘綜合分詞‘,word_total(s, score_fn=BigramAssocMeasures.chi_sq, n=1000))
import jieba
def wold_cut(text):
fenci=jieba.lcut(text)
return fenci
print(‘jiaba分詞‘,wold_cut(s))

分詞2