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

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

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

  • 事件抽取(三元組)
  • 觀點抽取

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

  • 技術文檔:pyltp.readthedocs.io/zh
  • 介紹文檔:ltp-cloud.com/intro/#
  • 介紹文檔:ltp.readthedocs.io/zh_C

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

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

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


1 信息抽取 - 搭配抽取

code可見:mattzheng/LtpExtraction

1.1 邏輯整理

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

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

  • 搭配用語查找(SVB,ATT,ADV)
  • 並列詞查找(COO)
  • 核心觀點抽取(HED+主謂賓邏輯)
  • 實體名詞搭配(詞性n )

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

1.2 code粗解讀

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

  • ltp模塊,一定要注意釋放模型,不要反覆 Postagger() / Segmentor() / NamedEntityRecognizer() /SementicRoleLabeller(),會持續Load進內存,然後boom...
  • 依存句法模塊,筆者主要是整理結果,將其整理為一個dataframe,便於後續結構化理解與抽取內容,可見:
  • 結果篩選模塊,根據上述的幾個關係進行拼接。

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

表的解讀,其中: - 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 因果事件抽取

主要包括以下幾個步驟:

  • 1、因果知識庫的構建。因果知識庫的構建包括因果連詞庫,結果詞庫、因果模式庫等。
  • 2、文本預處理。這個包括對文本進行雜訊移除,非關鍵信息去除等。
  • 3、因果事件抽取。這個包括基於因果模式庫的因果對抽取。
  • 4、事件表示。這是整個因果圖譜構建的核心問題,因為事件圖譜本質上是聯通的,如何選擇一種恰當(短語、短句、句子主幹)等方式很重要。
  • 5、事件融合。事件融合跟知識圖譜中的實體對齊任務很像
  • 6、事件存儲。事件存儲是最後步驟,基於業務需求,可以用相應的資料庫進行存儲,比如圖資料庫等。

以下是運行結果:

整理之後的結果:


推薦閱讀:
相關文章