Jieba库分词词性标注以及词性说明

分词实例

import jieba

import jieba.analyse

import jieba.posseg

def dosegment_al(sentence):

"""
带词性标注,对句子进行分词,不排除停词等
"""
sentence_seged = jieba.posseg.cut(sentence.strip())
outStr = ''
for x in setence_seged:
    outStr += "{}/{}".format(x.world,x.flag)
return outStr

词性标注表


提取wiki语料库过程

下载wiki dump

最新打包的中文文档下载地址是:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2

使用wikiextractor处理

wikiextractor可以剔除掉一些无用的信息,并使用汉语繁体转简体的算法

执行命令

通过pip安装wikiextractor或者在Github上下载code进行本地安装,具体流程见Githubhttps://github.com/attardi/wikiextractor
下载并安装后,将wiki dump放在wikiextractor目录下,执行命令

bzcat zhwiki-latest-pages-articles.xml.bz2
python WikiExtractor.py -b 500K -o extracted zhwiki-latest-pages-articles.xml

观察报错问题

出现如下问题:
1.wikiextractor语法问题,查看githubhttps://github.com/attardi/wikiextractor

2.大概是函数需要4个参数却提供了6个参数。查找了很多没有找到适合方法解决,后想到时候是python版本问题。于是将python3.6修改成3.5后顺利运行

运行繁简转换.py

小领域知识库介绍与构建(一)

首先什么是小领域知识库

在知识领域研究的人群应该对知识图谱有了一个大概的了解,此处不再对知识图谱再次科普,我将直接介绍知识库。知识库是存储类似于(主-谓-宾)的三元组,三元组的表述方式一般为(头实体-关系-尾实体)。往往现存的知识库是从一些百科上爬虫下来的全领域知识。往往我们在做数据分析时这样90%的数据就是领域之外的数据,将所有数据放入模型将会造成大量的冗余计算。

因此,引出了小领域知识库,将所需的领域知识库从全知识库中剥离出来,将会大大降低后续研究工作的复杂度。

如何构建小领域知识库

介绍完了小领域知识库的概念和构建动机。了解到小领域知识库的实体搭建。

命名实体识别(实体构建:

使用thulac工具进行分词,词性标注,命名实体识别(仅人名,地名,机构名) 为了识别农业领域特定实体,我们需要:

1.分词,词性标注,命名实体识别

2.以识别为命名实体(person,location,organzation)的,若实体库没有,可以标注出来

3.对于非命名实体部分,采用一定的词组合和词性规则,在O(n)时间扫描所有分词,过滤不可能为农业实体的部分(例如动词肯定不是农业实体)

4.对于剩余词及词组合,匹配知识库中以分好类的实体。如果没有匹配到实体,或者匹配到的实体属于0类(即非实体),则将其过滤掉。

5.实体的分类算法见下文。

实体分类:

特征提取:

特征提取

分类器:KNN算法

无需表示成向量,比较相似度即可

K值通过网格搜索得到

定义两个页面的相似度sim(p1,p2):

1.title之间的词向量的余弦相似度(利用fasttext计算的词向量能够避免out of vocabulary)

2.2组openType之间的词向量的余弦相似度的平均值

3.相同的baseInfoKey的IDF值之和(因为‘中文名’这种属性贡献应该比较小)

4.相同baseInfoKey下baseInfoValue相同的个数

5.预测一个页面时,由于KNN要将该页面和训练集中所有页面进行比较,因此每次预测的复杂度是O(n),n为训练集规模。在这个过程中,我们可以统计各个分相似度的IDF值,均值,方差,标准差,然后对4个相似度进行标准化:(x-均值)/方差.

6.上面四个部分的相似度的加权和为最终的两个页面的相似度,权值由向量weight控制,通过10折叠交叉验证+网格搜索得到。

Labels:(命名实体的分类)

分类