Python 對聊天記錄進行拆分,找出用戶最關心的諮詢問題!

背景:

最近部門領導交給筆者一個任務,想要從記錄用戶聊天記錄的數據表中,找出用戶對哪些問題比較關心(即:用戶諮詢過程中問到的哪些詞語出現的頻率最高),以便後期適當的做些業務的調整,改變推廣策略等等


聊天記錄如下:

你好

想了解想美國的博士申請

今年就畢業。準備申請2020年的。打算申金融或者工商

正在準備中

有幾篇中文的。比較水。

還沒有。博士競爭激烈。打算多申一些學校。

那qq吧。1111111

謝謝

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:詞性  2、3 都可以省略,之間用空格隔開


例:

cat userdict.txt

留學

出國

研究生

英國

美國


題外:

jieba還支持全精確模式、全模式、搜索引擎模式的分詞功能,這些分詞功能,無絕對的優劣之分,主要看適不適用於業務分析。關於這部分的內容,如果讀者有興趣,請自行百度查閱吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章