輸入法中,當你輸入乙個字的時候,輸入法就能猜出你要輸入什麼詞。這就是詞聯想。現在,再python中簡單實現類似這樣的功能:根據制定好的詞庫,輸入乙個新的詞,幫助實現詞聯想。其中分詞用了jieba包。
1#-*-coding:utf-8-*-23
45"""6
分詞的函式cut_words()
7"""
8def
cut_words(temp):
9import
jieba
10import
re11 wenben = re.sub("
[1234567890\s+\.\!\/_;:,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+
", ""
, temp)
1213 seg_list = jieba.cut(wenben, cut_all=true) #
全模式分詞14#
seg_list = jieba.cut(wenben,cut_all=false)#精確模式分詞15#
seg_list = jieba.cut_for_search(wenben) #搜尋引擎模式
16 lists =
17for item in
seg_list:
1819
20return lists #
分詞結果返回到乙個列表
2122
"""23
統計詞頻的函式get_counts1(),引數lists為切好的詞的列表
24"""
25def
get_counts1(lists):
26 counts ={}
27for item in
lists:
28if item in
counts:
29 counts[item] += 1
30else
:31 counts[item] = 1
32return
counts
3334
35"""
36方法2:統計詞頻的函式get_counts2,引數lists為切好的詞如下:
3738
"""39
from collections import
defaultdict
40def
get_counts2(lists):
41 counts =defaultdict(int)
42for item in
lists:
43 counts[item] += 1
44return
counts
4546
47"""
48統計詞頻的方法3:使用collection的counter方法,引數lists為切好的詞
49"""
5051
52def
get_counts3(lists):
53from collections import
counter
54 counter =counter(lists)
55print(counter.most_common(10))
5657
58"""
59按照詞頻排序的函式get_top_counts()
60"""
6162
63def
get_top_counts(counts):
64 value_keys = sorted([(count, tz) for tz, count in counts.items()], reverse=true)
65 result ={}
66for item in
value_keys:
67 result[item[1]] =item[0]
68return
value_keys69#
return result
7071
"""72
獲取原始文字的所有漢字的聯想詞。函式的引數為原始文字。
73"""
7475
76def
get_lianxiang(temp):
77import
re78 wenzhang = re.sub("
[1234567890\s+\.\!\/_;:,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+
", ""
, temp)
79 a = cut_words(wenzhang) #
分詞80 b = get_counts1(a) #
詞頻統計
81 data ={}
82for i in
range(len(wenzhang)):
83 data[wenzhang[i]] ={}
84for key in
get_counts1(a):
85try:86
if wenzhang[i] ==key[0]:
87 data[wenzhang[i]][key] =b[key]
88except:89
pass
90print
(data)
9192
"""93
詞聯想的函式,輸入的引數為輸入的詞,然後根據詞庫,按照詞頻高低,
94輸出你想輸入的片語,即詞聯想。詞庫為《明朝那些事》的部分章節。
95"""
96def
get_lianxiang1():
97import
re98 word = input("
請出入您想聯想的詞:")
99print("
請稍等...")
100 wenzhang = re.sub("
[1234567890\s+\.\!\/_;:,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+
", ""
, temp)
101 a = cut_words(wenzhang) #
分詞102 b = get_counts1(a) #
詞頻統計
103 data ={}
104for i in
range(len(wenzhang)):
105 data[wenzhang[i]] ={}
106for key in
get_counts1(a):
107try
:108
if wenzhang[i] ==key[0]:
109 data[wenzhang[i]][key] =b[key]
110except
:111
pass
112if word in
data:
113 dic=data[word]
114 a=get_top_counts(dic)
115 b=
116for item in
a:118
#print(a)
119print("
為您聯想的幾個詞為:
",b)
120#
print("聯想結果如下:\n",data[word])
121else
:122
print("
沒有根據本篇文章,您輸入的詞的聯想詞!")
123get_lianxiang1()
124125
126if
__name__ == '
__main__':
127 temp = "
"128 get_lianxiang1() #
呼叫獲取聯想詞的函式。
Python抓取搜尋引擎聯想詞
眾所周知python可以用來寫爬蟲抓取資料。而這個例子是我學習寫的第乙個簡單的爬蟲 抓取 360搜尋引擎搜尋時的聯想詞集合。我們在使用搜尋引 擎搜尋東西時,當我們輸入乙個詞之後搜尋框下方會出現一系列聯想詞如圖所示。我們nba。如圖所示 我們將這個url輸入到位址列中網頁返回了聯想詞的集合如圖所示 c...
python拆分 如何用Python進行片語拆分?
可以先split 做好特殊字元標記,儲存到臨時變數裡面,比如,元組,陣列,或者字典之類的 再遍歷上面的變數,拆分括號,用乙個特殊標記,標記括號裡面的內容,總之找到區分括號和非括號內容就可以,之後儲存到變數 最後遍歷第二個變數,生成句型 抱歉最近精神狀態不太好,又比較忙,今天大概寫了下,應該沒有啥問題...
python包含判斷 字串包含詞庫中的詞
這個方法就是將短文本切分成與詞庫資料等長的詞,判斷是否包含。速率塊,詞與詞包含關係判斷也可用 複製直接用 判斷一條語句是否包含詞庫中的詞 def word parameter word list 包含關係方法所需的詞典 word set set word list num list len word...