BrambleXu / knowledge-graph-learning

A curated list of awesome knowledge graph tutorials, projects and communities.
MIT License
736 stars 120 forks source link

EDBT-2017-Improving Company Recognition from Unstructured Text by using Dictionaries #248

Open BrambleXu opened 5 years ago

BrambleXu commented 5 years ago

一句话总结:

通过使用字典,来提高在非规则文本中,对于公司实体的识别效果

资源:

论文信息:

笔记:

公司实体识别的难点在于公司的名字包含了 人名,地点,首字母缩写,数字和其他一些不正常的token。而且,大部分人都是用更口语化的名字。这篇文章的解决方法是用字典来提高抽取效果。

2. RELATED WORK

According to [24], dictionaries can be separated into two different classes, so-called trigger dictionaries, which contain keywords that are indicative for a particular type of entity, and entity dictionaries, which are comprised of the entire entity labels

3. CONDITIONAL RANDOM FIELDS AS NER BASELINE

image

作者用CRF作为baseline,并测试了很多不同的feature,效果最好的是下面几个:

The baseline system achieves an F1-measure of 80.65%.

4. CORPUS & DICTIONARIES

4.1 Text corpus

Our evaluation corpus consists of 141,970 documents containing approximately 3.17 million sentences and 54 million tokens.

发现大报纸经常报道大公司,而地方报纸经常报道小公司。

4.2 Dictionaries

构建字典的时候,用到了很多数据。主要用了两个官方信息数据:

还有一些其他数据来源:

用于evalution:

为了进行对比,还用人工标注了一个测试集,用于衡量效果。

5. COMPANY RECOGNITION USING GAZETTEERS

5.1 Alias generation

colloquial name: 口语化的名字。

大部分公司有很多正式的别名, the company Porsche has at least four valid and common aliases, namely “Dr. Ing. h.c. F. Porsche AG”, “Ferdinand Porsche AG”, “Porsche AG”, or just plain “Porsche”. 另外还有很多不正式的别名:比如“Volkswagen” is also referred to as “VW” or even “die Wolfsburger”。Wolfsburger是地名,因为是Volkswagen总部,所以经常被用来指代Volkswagen。这种情况在日语里比较少。很少用地名直接称呼公司。

通过下面五种方法,来构建别名TOYOTA MOTOR(TM) USA INC

image

前4步可以得到4个别名,最后第5步可以对前4步每一步的结果都提取词干,这样就是9个别名了。

5.2 Dictionary and feature construction

根据上面2相关研究里,使用entity dict来包含整个entity的名称。为了在CRF的训练阶段能利用好dictionary里里包含的信息,我们构建了一个feature来表示当前被分类的token,是否是dictionaryes中某个公司的一部分。为了更有效地把text中的token和dictionary中的公司名字进行匹配,我们对一个公司的名字以及所有的aliases进行tokenize,然后把生成的token插入到trie data structure. 在这个插入的过程中,我们对每一个token sequence的最后一个token添加一个flag,表示这个是公司名的最后一个token。通过这种方式,把所有的公司名,都闯入到这个token trie里。Fig2展示了这个插入了company names的token trie。

image

创建好之后,这个trie functions可以作为一个finite state automaton (FSA),来有效地解析和对文本中预测出的公司token进行标注。

我们通过greedy的方式来进行匹配,每次都找longest possible match。这也体现了使用entity dictionary,而不是trigger dictionary的优势。因为包含了整个entity的words,方便对matching state进行追踪,来决定是否匹配。

6.1 Experimental setup

为了进行验证,随机选了1000个数据(必须包含公司名)进行人工标注。标注规则比较严格,必须是公司名,人名,产品名,品牌名都不算。比如说根据context BMW是公司名,但是BMW X6就是产品名。所以不对后者进行标注。这里token X6表明了BMW是一个product mention。整个标注了2351个公司名。一个句子可能有多个mention.

最后用一个ten-fold cross-validation。900个训练样本,100个测试样本。每一个fold都计算 precision, recall, and F1-measure. 结果在table 2

image

为了比较不同dictionary的效果,这里根据source (Bundesanzeiger, GLEIF, GLEIF(DE), Yellow Pages and DBpedia) 制做了3个dict version。第1个版本包含了所有公司原始的名字,第二个版本添加5.1版本里所有种类的alias,第三个版本还添加了company的不同Stem 版本。在alias生成的阶段,不包含拿1000个手工标注的数据。

6.2 No dictionaries

Baseline是CRF,使用的feature是各种人工制作的feature,比如n-grams, pos-tags, prefixes and suffixes。因为Stansofrd NER系统里也用到了。

模型图:

结果

有一个问题

这篇文论讨论的是公司名,但是那些group名怎么办。比如说TIS INTEC Group(2,300)、TISインテックグループ(1920), TIS 株式会社(7,590)、インテック(17,000)