雪花臺灣

ltp︱基於ltp的無監督信息抽取模塊

ltp︱基於ltp的無監督信息抽取模塊

來自專欄素質雲筆記2 人贊了文章

?無監督信息抽取較多都是使用哈工大的ltp作為底層框架。那麼基於ltp其實有了非常多的小夥伴進行了嘗試,筆者私自將其歸納為:

「語言云」 以哈工大社會計算與信息檢索研究中心研發的 「語言技術平臺(LTP)」 為基礎,為用戶提供高效精準的中文自然語言處理雲服務。 pyltp 是 LTP 的 Python 封裝,提供了分詞,詞性標註,命名實體識別,依存句法分析,語義角色標註的功能。

需要先載入他們訓練好的模型,下載地址

初始化pyltp的時候一定要留意內存問題,初始化任何子模塊(Postagger() /NamedEntityRecognizer()等等)都是需要佔用內存,如果不及時釋放會爆內存。 之前比較好的嘗試是由該小夥伴已經做的小項目:liuhuanyong/EventTriplesExtraction,是做三元組抽取的一個實驗,該同學另外一個liuhuanyong/CausalityEventExtraction因果事件抽取的項目也很不錯,辛苦寫了一大堆規則,之後會對因果推理進行簡單描述。

筆者也自己寫了一個抽取模塊,不過只是簡單評論觀點抽取模塊。 留心的小夥伴可以基於此繼續做很多拓展:搭配用語挖掘,同義詞挖掘,新詞挖掘 code可見:mattzheng/LtpExtraction


1 信息抽取 - 搭配抽取

code可見:mattzheng/LtpExtraction

1.1 邏輯整理

整個邏輯主要根據依存句法分析,筆者主要利用了以下的關係類型:

那麼筆者理解 + 整理後得到四類抽取類型:

其中筆者還加入了停詞,可以對結果進行一些篩選。

1.2 code粗解讀

這邊細節會在github上公開,提一下code主要分的內容:ltp啟動模塊 / 依存句法解讀 / 結果篩選

案例句:艇仔粥料很足,香蔥自己添加,很貼心。

表的解讀,其中: - word列,就是這句話主要分詞結果 - relation列/pos列,代表該詞的詞性與關係 - match_word列/match_word_n列,根據關係匹配到的詞條 - tuples_words列,就是兩者貼一起

同時若覺得需要去掉一些無效詞搭配,也可以額外添加無效詞進來,還是比較彈性的。

1.3 結果展示

句子一:

句子二:

句子三:


2 三元組事件抽取 + 因果事件抽取

幫這位小夥伴打波廣告~

2.1 三元組事件抽取

該模塊主要利用了語義角色srl,先定位關鍵謂語,然後進行結構化解析,核心的語義角色為 A0-5 六種,A0 通常表示動作的施事,A1通常表示動作的影響等,A2-5 根據謂語動詞不同會有不同的語義含義。其餘的15個語義角色為附加語義角色,如LOC, 表示地點,TMP,表示時間等(一些符號可見筆者另一篇博客:python︱六款中文分詞模塊嘗試:jieba、THULAC、SnowNLP、pynlpir、CoreNLP、pyLTP)。

基於依存句法與語義角色標註的事件三元組抽取 文本表示一直是個重要問題,如何以清晰,簡介的方式對一個文本信息進行有效表示是個長遠的任務.我嘗試過使用關鍵詞,實體之間的關聯關係,並使用textgrapher的方式進行展示,但以詞作為文本信息單元表示這種效果不是特別好,所以,本項目想嘗試從事件三元組的方式出發,對文本進行表示. 項目地址:github.com/liuhuanyong/

使用之後的效果:

這邊筆者覺得在結果之上,進行一些清洗的話,效果還是可以的,特別是事件性較強的,有效實體比較多的句子效果會比較好。當然,把這個用在評論中簡直...

2.2 因果事件抽取

主要包括以下幾個步驟:

以下是運行結果:

整理之後的結果:


推薦閱讀:
相關文章