背景:mysql
最近部門領導交給筆者一個任務,想要從記錄用戶聊天記錄的數據表中,找出用戶對哪些問題比較關心(即:用戶諮詢過程當中問到的哪些詞語出現的頻率最高),以便後期適當的作些業務的調整,改變推廣策略等等sql
聊天記錄以下:ide
你好fetch
想了解想美國的博士申請搜索引擎
今年就畢業。準備申請2020年的。打算申金融或者工商spa
正在準備中orm
有幾篇中文的。比較水。索引
尚未。博士競爭激烈。打算多申一些學校。ip
那qq吧。1111111ci
謝謝
2222222
本科GPA通常。3.4的樣子
211
孟
學生
都行的
嗯好的
麻煩問下會先qq聯繫吧
電話不必定能接到
嗯對
嗯
謝謝
思路:
使用jieba模塊的自定義詞庫對每條聊天記錄進行拆分(即:中文分詞),而後將每條分詞的結果存到中間表,最後對這張中間表進行結果的彙總。雖然jieba具有了新詞語的識別能力,可是詞庫中的詞語可能對於某個特定領域的詞語分詞的識別的不是特別使人滿意,使用自定義的關鍵詞庫,能夠使分詞時保證更高的準確性。
源代碼:
cat userdict.txt
留學
出國
研究生
英國
美國
cat fenci_dictionary.py
import jieba.analyse
import pymysql
db = pymysql.connect(host='xx.xx.xx.xx',user='xxx',passwd='xxx',db='dbname',charset='utf8',connect_timeout=30)
cursor = db.cursor()
sql= 'SELECT msg from tablename where msg_type="g" limit 50'
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
row = row[0]
# UserDictionary Model
jieba.load_userdict('userdict.txt')
for i in jieba.cut(row):
sql1 = 'insert into test.tmp_fenci_statistic(keywords) values("%s")' % i
try:
cursor.execute(sql1)
db.commit()
except:
db.rollback()
db.close()
jieba介紹:
jieba分詞器安裝(就是一個Python模塊)
pip3 install jieba
jieba分詞添加自定義詞典:
若是詞庫中沒有特定領域的詞語,或者對於某個特定領域的關鍵詞不是識別的特別使人滿意,雖然jieba具有了新詞語的識別能力,可是咱們能夠自定義屬於本身的關鍵詞庫,以便在分詞時保證更高的準確性
語法:
jieba.load_userdict(filename) #filename爲自定義的詞典路徑
詞典格式:
一個詞佔一行,能夠包含三個部分,1:詞語,2:詞頻;3:詞性 二、3 均可以省略,之間用空格隔開
例:
cat userdict.txt
留學
出國
研究生
英國
美國
題外:
jieba還支持全精確模式、全模式、搜索引擎模式的分詞功能,這些分詞功能,無絕對的優劣之分,主要看適不適用於業務分析。關於這部分的內容,若是讀者有興趣,請自行百度查閱吧。