GooSeeker分词工具由两个模块组成:
命名实体识别(NER)是在分词的时候做的,是在扩展功能模块上实现的。 命名实体有很多类型,例如:人名、机构名、地名、时间等,甚至包括特定事件、特定产品等。下面讲解怎样利用GooSeeker分词工具将文本中的命名实体识别出来。 1. 中英文分词 GooSeeker分词工具的扩展模块提供两个分词算法:jieba和spacy。同时兼顾中文和英文分词方面,spacy更胜一筹。其实除中英文以外的其它语言也能支持,只是现在发布的GooSeeker分词工具版本只加载了中文和英文语言模型。 导入数据的时候,多条文本(一条称为一个文档)中既可以有中文文档也可以有英文文档。同一个文档中可以有混合的中英文。如下图展示了一个测试样本: 【但是要注意】:同一个文档中混合了中英文内容的时候,分词软件要根据各自的比例来决定采用中文语言模型还是英文语言模型,选定后,分词结果会更照顾中文文法或者更照顾英文文法,但是,不能都兼顾。尤其在命名实体识别的时候会看出来明显的差别。 选择哪种语言模型的策略:粗略按照一条文档所含的英文比例来决定,如果英文超过70%,那么就用英文语言模型。下面我们看一下效果。 2. 导出分词效果表 GooSeeker分词工具的一个重要功能是手工选词。但是,为了导出分词效果表是不需要选词的。导入文本以后就会自动分词和识别命名实体,导入完成后就可导出结果,其中就有分词效果表。如下图: 【注释】:从上图可以看到,我们选择了spacy分词算法,导出的分词效果表中才有命名实体类型。在导入以后和导出之前,要选择分词器spacy。如果选用jieba分词,虽然没有经典的命名实体识别功能,但是可以根据词性判断是否是人名、地名、机构名、其他专有名词,词性符号分别是:nr, ns, nt, nz。在导出的词频表中有这些信息。 3. 分词效果表的字段和用法 GooSeeker分词扩展模块导出的分词效果表要比基本模块的分词效果表多好几个字段。多出来的这些字段名字都有一个后缀_json,表示其内容不是普通的文本,而是json数组。基本字段“分词数据”是普通的文本,但是,如果被分词的文本是英文,例如,最后一条文档,那么出现人名的时候,人名是由2个或者多个词组成的。此时,“分词数据”字段就表示不出来一个人名含有多个词这种情形。相对的“分词数据_json”字段,每个词都用引号括起来,就不会把一个人名中的多个词当成多个分开的词了。 另外,“词干数据”只对英文是有效的,比如,同一个动词有不同的时态,同一个名词有单复数,都需要做词形还原,还原后就放在“词干数据_json”字段中。“归一化数据”最大的特点是把大写字母变成小写,同时还会统一标点符号。 本文最关注“实体类型数据_json”字段,从上图可以看到,这个字段存的是命名实体的类型,而每个类型值对应哪个词?可以通过对照“实体类型数据_json”和“分词数据_json”得到所对应的词。 4. 中英文混合造成的失误 序号是4的那个文档,中文比例很高,所以,当成中文文档进行分词,就没把Elon Musk识别成人名。作为对比,序号为11的那个文档是纯英文,就正确地识别出了这个人名。 |