我想使用standfordcorenlp来提取引用,并开始处理预标记文本的依赖性。我最终希望在相关命名实体之间建立图节点和边。我使用python,但是使用nltk的java函数调用斯坦福大学.StanfordCoreNLP管道“直接jar(这也是nltk在幕后所做的)。在
我的预标记文本采用以下格式:
PRE-LABELED: During his youth, [PERSON: Alexander III of Macedon] was tutored by [PERSON: Aristotle] until age 16. Following the conquest of [LOCATION: Anatolia], [PERSON: Alexander] broke the power of [LOCATION: Persia] in a series of decisive battles, most notably the battles of [LOCATION: Issus] and [LOCATION: Gaugamela]. He subsequently overthrew [PERSON: Persian King Darius III] and conquered the [ORGANIZATION: Achaemenid Empire] in its entirety.
我试图自己将句子标记化,构建一个IOB格式的元组列表:[(“During”,“O”),(“his”,“O”),(“youth”,“O”),(“Alexander”,“B-PERSON”),(“III”,“I-PERSON”),…]
不过,最初我不能把这些标记为核心词的句子,作为一个新的标记,我不能把它们命名为新的符号。很明显,我试着简单地剥离我的标签,让CoreNLP自己来做,但是CoreNLP在查找命名实体方面不如人类标记的预标记文本好。在
我需要如下输出。我知道用这种方式使用依赖关系来获取边是很困难的,但是我需要看看我能达到什么程度。在
^{pr2}$我如何向CoreNLP提供一些预先标识的命名实体,并仍然获得有关其他命名实体、共指引用和基本依赖项的帮助?
请注意,这不是NLTK Named Entity Recognition with Custom Data的副本。我不想用预先标记的NER训练一个新的分类器,我只想在运行同指(包括提及)和对给定句子的依赖时添加CoreNLP。在
答案是用Additional TokensRegexNER Rules生成一个规则文件。在
我用正则表达式把标记的名字分组。在此基础上,我构建了一个rules temp文件,并用
-ner.additional.regexner.mapping mytemprulesfile
传递给corenlp jar。在为了可读性,我已将此列表对齐,但这些值是制表符分隔的值。
一个有趣的发现是,一些多单词的预标记实体保持原来的多单词标记,而运行corenlp而不使用规则文件有时会将这些标记拆分为单独的实体。在
我本来想明确地标识命名实体标记,认为这会使引用更容易,但我想现在就可以了。不管怎样,在一个文档中实体名相同但不相关的频率是多少?在
示例(执行需要约70秒)
^{pr2}$输出
相关问题 更多 >
编程相关推荐