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

背景: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還支持全精確模式、全模式、搜索引擎模式的分詞功能,這些分詞功能,無絕對的優劣之分,主要看適不適用於業務分析。關於這部分的內容,若是讀者有興趣,請自行百度查閱吧。

相關文章
相關標籤/搜索