技术改变生活——用HanLP来协助处理现实中问题
生活随笔
收集整理的這篇文章主要介紹了
技术改变生活——用HanLP来协助处理现实中问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
此例是我之前在學習nlp過程中的一個demo項目,并使用了HanLP官網提供的API接口實現功能,具體需求如下:
?1 .項目背景
? ? ? ? ?平時收集了一下客戶對于餐館的評價,這些數據一方面可以讓每一位用戶清楚地看到每個商家所提供的服務質量,同時讓一個商家也意識到自己的問題所在。 但是面對大量的評論數據,如何讓一個用戶或者商家能夠更方便地看到全貌呢? 這就是本項目中需要解決的問題。
目標是將這些評價數據進行分類,比如分成滿意或者不滿意,這一類基于用戶評價的情感極性分析系統,來策劃餐館滿意菜品的推薦、用傾向性分析來幫助商家從大量評論中挖掘有價值的信息,更好的認識服務的特色點,不足點。以及提高創收利潤。
?
2 .查看數據。評價數據的抽樣:
可以看到數據集中有餐館的id編號,以及對餐館的評價分數(總體評分、環境、口味、服務)
?
?
3. 數據清洗:
? ? ? ?在語料庫中找到我們感興趣的東西,把不感興趣的、視為噪聲的內容清洗掉,比如從網絡上爬取的亂碼、時間戳等文本(上面用戶點評的數據已經經過了數據清洗)
4. 分詞:
? ? ? ?中文文本通常是一批短文本或者是長文本,比如:一篇文章摘要、一則簡訊快報、一個段落等,一般在此類文本中句子之間的字和詞是連續的,有一定的含義。但是在我們進行文本處理的時候,更多的希望可以處理文本的粒度為最小的字為單位,所以這個時候就需要用到分詞來進行對文本的全部分詞。
? ? ? ?簡單好用的中文分詞利器:HanLP 。HanLP從v1.7版起獨立運作,由自然語義(青島)科技有限公司作為項目主體,主導后續版本的開發,并擁有后續版本的版權。授權協議為 Apache License 2.0,可免費用做商業用途。?
? ? ? ?目前HanLP官網測試版注冊賬號,并可以免費調用API接口,采用了開源HanLP的最新技術,功能完全一致,采用上億文字的通用語料庫訓練生成,能夠解決一般情況下大多數的NLP開發需要。
? ? ? ?調用了HanLP的多語言分詞下的標準分詞,
? ? ?該接口返回的是json數據格式,使用java函數進行對用戶點評數據的遍歷分詞,得到結果如下(滿意+抱怨點評):
?
?5. 詞性標注
? ? ? ?詞性標注是為句子中每個單詞預測一個詞性標簽的任務,提供詞語的抽象表示,便于進行更深層次的文本挖掘處理,無需擔心新詞發現、歧義消除等問題。
? ? ? ?設計需求如下:考慮使用該接口功能獲得用戶點評數據中的詞性,然后編寫函數將詞性為形容詞adj的單詞進行文本挖掘,再對這些形容詞語(好古老、復古、實惠、略貴、爽口,極其粗魯等)的處理(如進行詞頻統計,生成詞云)來對用戶對餐館的點評描述可視化,以此做傾向性分析來改善餐館的服務質量等提升。? ??
?
?
另外詞性標注還可以作詞語的消除歧義,有效剔除“噪音“誤導,比如對“他馬上功夫很好”這句話,該模型通過識別該句話的語境和上下文特征,對“馬上”二字進行分開識別成“馬n/上l”,而不是識別成“馬上n”。
?
6. 詞頻統計(詞云展示)
如上面在詞性標注提取到adj形容詞后,對該用戶點評數據中形容詞進行了詞頻的統計,并對其詞云化展示,得到結果如下:
7.命名實體識別
? ? ? ?命名實體識別,是指識別文本中具有特定意義的實體,主要包括人名、地名、機構名、專有名詞等,進而挖掘各實體間的關系。
? ? ? ?設計需求如下:嘗試對用戶點評文本數據中的菜品名稱進行命名實體識別,然后對識別后的菜品名稱進行后續的分析(對餐廳菜系菜品的推薦、對現已有的菜品質量進行評定審核等)
在對用戶點評數據進行菜品名稱識別時,HanLP關于ner接口有
?中國人名識別、日本人名識別、機構識別、地名識別、音譯人名識別、深度學習命名實體識別等,不過對于菜品名稱的命名實體標注需要對語料進行自定義標注,HanLP也提供了中文語料庫標注:
?可使用該語料標注規范的進行語料標注,正確理解NLP中詞性定義。這其中涉及中文環境中的分詞與詞性內容:
標注符號中有14項非常見標注符號,包括:“nr”、“ns”、“nt”、“nz”、“m”、“q”、“t”、“r”、“b”、“i”、“L”、“j”、“g”、“x”。如以下人名/nr的標注和 成語/i 習用語/l的標注等。
?
? ? ? ?添加自己的用戶點評生語料數據進行菜品名稱標注:
? ? ? ?進入標注系統:?
? ? ? ?領取設定的菜品名稱任務:
? ? ? ?進入自定義標注語料:
?上示意圖中下半部分已經使用HanLP標注系統自動化標注完畢,上半部分是可選擇的詞性標簽。利用可選擇詞性標簽對下半部分的語句進行自定義化標注。我對nz其他專名(菜品名稱)進行了語料的標注,得到如下符合我要求的自定義語料庫:
?還可以子賬戶標注完之后,使用主賬戶進行二次審核,進行駁回或者通過。
?在審核通過之后即可標注為成熟語料庫,對語料進行打包,送入模型訓練。
?
?模型訓練是HanLP特有的定制化功能服務,無需復雜的環境搭建與編程,直接調用HanLP算法,訓練專屬私有模型。
?
?進行菜品名稱標注模型訓練:
在經過了調用虛擬機訓練任務后,模型訓練完畢,在模型管理分欄中得到最新訓練的算法模型。
?獲取API功能是將模型生成私有API接口進行調用,只有本賬號能夠查閱并使用。
? ? ? ?調用了HanLP的命名實體識別API(菜品名稱)接口,對用戶點評數據進行了NER識別,得到如下的分析結果:
對
慕斯蛋糕甜而不膩好吃!!燒雞飯的雞肉很香!!愛了愛了得到"nature":"food"的命名實體識別結果:? ?慕斯蛋糕? ? ?、? 燒雞飯 。
編寫函數依次對用戶點評數據進行輸入,調用HanLP API接口來進行命名實體識別可以很方便快捷的對所需要的實體進行識別,列出了用戶點評數據中某料理店的菜品名稱如下:
不同于常規的人名、地名、機構名的實體,使用HanLP進行了自定義化的NER命名實體識別,這樣做可以更有效的個性化定制提取,還可以對此類菜品名稱后續進行更多的下游任務如餐廳菜系菜品的推薦,對餐廳菜品營銷的策略等等。當然,還可以對醫療文本數據中的藥品名、疾病名、醫療器械名等進行個性化NER命名實體識別。
8.依存句法分析
? ? ? ? 依存句法分析是識別語句中詞與詞之間的依存關系,并揭示其句法結構,包括主謂關系、動賓關系、核心關系等。
? ? ? ? 設計需求如下:根據目標提取用戶評價,作為此系統的使用者-餐廳管理經營者,因為用戶評價是多維度的,比起一個大體的評價,商家更希望獲得一些更加具體的信息,比如商家想獲得用戶對新來的蛋糕面點師傅手藝看法,明天想獲取用戶對餐廳服務員服務態度的評價等,這類更多細節具體的信息。
? ? ? ? ?以上這類更加細節具體的用戶數據,可以通過依存句法分析從技術上實現,如:這家店 的 甜點 真不錯 并且 小姐姐的服務態度很熱情 。? ? ? ?使用依存句法分析后可以根據aspect來切分目標提取用戶評價,?
? 如果aspect==甜點, 分析結果就獲得? ?[ /K ,這家/L ,店/E ,的/L ,甜點/A ,真/K ,不錯/A , /A]? ? ? 甜點 - 不錯 。
??如果aspect==服務??分析結果就獲得? ?[ /K ,小姐姐/K ,的/L ,服務/L ,態度/L ,很/L ,熱情/L , /A]? ? 服務態度?- 熱情?
得到詞與詞之間的依存關系,并從其中獲取到之間的結構聯系。
調用了HanLP依存句法分析API接口后通過分析得到如下結果:
? ? ? ? ?最終得到? ?甜品- 不錯? 、? 服務態度 - 熱情 此類具體的用戶評價信息,為商家了解生意產品提供直觀性說明。
9.情感分析
? ? ? ? ?文本分類的應用場景非常廣泛,常見的情感分析是其一個子集,涵蓋垃圾郵件過濾、垃圾評論過濾、自動標簽,輿情分析、改進服務及產品、了解用戶的體驗等任何需要自動歸檔文本的場合。
? ? ? ? ?設計需求如下:用戶的評論是商家服務質量的反饋,如何在大量的評論數據中幫助商家意識到自己的問題,提高用戶的滿意度具有經濟價值,這就是本博客中嘗試解決的問題。使用HanLP接口做詞性標注、命名實體識別,最終搭建一套基于用戶評價的情感分類系統,以期幫助商家從大量評論中挖掘有價值的信息,更好的認識服務的特色點,不足點。
同樣的HanLP提供了更為方便系統的情感分析API調用。
? ? ?在進行情感分析輸入數據之前要對文本數據進行分詞、詞性標注、命名實體識別、依存句法分析管道式操作。以上已經對用戶評價數據進行了處理,對用戶評價數據中抽取樣例,
這家店 的 甜點 真不錯 并且 小伙子的服務態度很熱情 。調用HanLP情感分析API后,得到如下結果:
這家店 的 甜點 真不錯 并且 小伙子的服務態度很熱情 。? ? ?情感極性是 【正面】
什么服務態度,點餐半個小時才上菜,下次再也不來吃了。? 情感極性是 【負面】
?顯然的,對于情感分析模型HanLP已經訓練好,只需要將用戶評價的數據作為輸入,輸出值即正負情感極性,對于商家收取到的用戶平均數據時,可調用該API接口做正負極性的二分類數據,將正面評價數據進行數據挖掘分析,對用戶點贊的內容繼續推廣、? 將負面評價的數據分析后,對用戶提出的意見內容進行整改,同時也意識到自己的問題所在。
?
10.總結和思考
? ? ? 1.? 在處理此項目需求時,考慮面對眾多文本處理的步驟,繁瑣且無專業性知識難以編程。在此項目完畢后,對使用工具HanLP的API調用好感倍增,較之前科研的nlp項目從零搭建模型環境、處理數據、模型訓練、結果分析而言,用HanLP的API的感覺像是一把鋒利的奧卡姆剃刀?————如無必要 勿增實體,直接API調用來實現用戶的需求 ,簡單高效的感覺再好不過了。
? ? ? 2. 在設計該項目時,對于使用API接口調用,原始生文本的完整正確性對于模型結果影響因子較大,在嘗試多次調用試驗后得到上文的輸出json數據,再進行編程對json數據處理后才能得到符合項目需求的數據。
? ? ? 3.另,對于其中處理的一些錯誤點(如對于菜品名稱的NER命名實體識別,獅子頭、絕代雙驕、螞蟻上樹等自定義實體),只是使用通用性的API接口來調用,難免有所缺失,需要在該特定領域建立自己的技術模型,為特定場景下的更好體驗,使用語料管理工具生成自己獨有的語料庫,并使用模型訓練工具生成自己的專屬模型才能更好的自定義化用戶需求。此博客使用HanLP的API來實現餐廳用戶評價情感分析系統項目,結果初步成型,但精度未夠,記錄在案。
總結
以上是生活随笔為你收集整理的技术改变生活——用HanLP来协助处理现实中问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美国国家气候数据中心(NCDC)数据下载
- 下一篇: 软交所助力国家级软件评测中心