图3.5 分词过程
中科院分词系统:
图3.6 分词测试
总体流程:输入的一句话,sSentence="张华平欢迎您"
a) 分词 "张/华/平/欢迎/您"
分词程序首先在其头末添加开始符和结束符
sSentence="始##始张华平欢迎您末##末"
然后是分词,基本思想就是分词的得到的词的联合概率最大
假设“张华平欢迎您”分为"w_1/w_2/.../w_k"则w_1/w_2/.../w_k=argmax_{w_1'/w_2'/.../w_k'}P(w_1',w_2',...,w_k')=argmax_{w_1'/w_2'/.../w_k'}P(w_1')P(w_2')...P(w_k')
首先给原句按字划分,所有汉字一个一段,连续的字母,数字一段,比如"始##始张华平2006欢迎您asdf末##末"被划为"始##始/张/华/平/2006/欢/迎/您/asdf/末##末"
接着找出这个句子中所有可能出现的词,比如"始##始张华平欢迎您末##末",出现的词有"始##始","张","华","平","欢","迎","您","末##末","欢迎"并查找这些词所有可能的词性和这些词出现的频率。
b) posTagging "张/q 华/j 平/j 欢迎/v 您/r"
m_POSTagger.POSTagging(m_Seg.m_pWordSeg[nIndex],m_dictCore,m_dictCore);//对第nIndex个分词结果用标准的字典标注方便起见,下面假设m_nValueKind=1
m_POSTagger用HMM对分词进行标注,这里输出概率为P(w_i|c_i),c_i为词性,w_i为词;转移概率为P(c_i|c_{i-1}),初始状态为P(c_0)即P("始##始"的词性)用文特比算法求出一个c_1/c_2/.../c_k=argmax_{c_1'/c_2'/.../c_k'}P(w_1',w_2',...,w_k')将句子分成若干段,每段以有唯一pos的w结尾,也就是分词中CResult.m_Seg.m_pWordSeg[0][k].nHandle>0的那些词。比如,举个例子:
"0 始##始 1 张2华3平4欢迎5您6末##末 7"
pos1 pos1 pos1 pos1 pos1 pos1 pos1
pos2 pos2 pos2 pos2
pos3 pos3 pos3
pos4
pos5
则该句被划分为
"0始##始"
"1张2华3平4欢迎5您"
"6末##末"
对每一段用文特比算法确定一个唯一的postag
c) NE识别:人名识别,音译名识别,地名识别 "张/q 华/j 平/j 欢迎/v 您/r" "张华平/nr"
其基本思路和PosTagging一样,只不过词性c换成了role r,以人名识别为例,首先识别出人名的tag(即pos),见
"Chinese Named Entity Recognition Using Role Model"
d) 重新分词:"张华平/欢迎/您"
找出一个联合概率最大的分词结果
e) 重新posTagging: "张华平/nr 欢迎/v 您/r"
对于分好的结果,用标准词典对其进行posTagging
4网页抓取和统计系统的实现
4.1 总体设计
4.1.1 需求分析
网页抓取和统计系统是为了方便用户获得更多的搜索信息,提供更好的搜索服务,通过一些分析找出搜索时输入的关键词的关系反馈出来,提供给用户更准确的信息。
首先要设计一个界面,确定好一些基本的功能选项,要实现新浪新闻摘要的搜索功能,用显示控件显示一些摘要信息,然后插入引用分词程序对摘要内容分析,并显示出来,并要实现对这些关系词的排序,显示排序结果。采用了C#开发程序界面及整个系统。
系统应该包括网页抓取、分词统计、保存新闻到本地等功能模块。
系统界面设计方面,直观、易懂、突出系统的重点。再通过对用户的调查要求的分析完善相关的功能。
4.1.2 系统功能模块
详细分析了整个系统的设计过程后,可以将本系统大致分为以下几个功能模块,如下所示: 网络特定文本信息抓取及统计(10):http://www.youerw.com/jisuanji/lunwen_3461.html