- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业最大匹配分词法
作业三 中文分词法
中文分词法:开始没有思路,后来查了下资料和问了下同学,才搞定的。我的思路:
这里说的是最大匹配分词法:首先准备一个分词词表input.txt作为输入,顺序扫描待分词的句子,将句中候选词按照词长从大到小的顺序依次跟词表cizu.txt文件中的词进行匹配,匹配成功即作为一个词输出。这样就使得每次输出的词是长度最大的(相比已知的确定的词表而言)。如果一个句中的多字候选词跟词表中所有的词都匹配不上,自然就只能把单字词当作分词结果输出了。
把事先准备好的欲分词文件在目录d:\\output\\input.txt,那么我们开始执行程序显示
之后再看文件夹d:\\output里面多了个output.txt的文件,这就是对input.txt做好的分词输出文件。
程序的算法思想:
首先对一篇文本按照标点符号等自身的分隔符分解成句子,然后对每个句子按照词长MAX_CWORD_LEN=18(9个汉字)的正向最大匹配法进行分词。
在划分句子的时候,最关键的操作在确定字串在何处断开成为独立的句子。这里考虑了英文和中文混杂的情况。
数据结构:
使用二维的指针数组进行词典存储:词典中的每个词利用其第一个字节和最后一个字节进行二维定位来存储,有相同的第一个字节和最后一个字节的多个词串用指针进行相连。这种存储方式极大得提高了查词典的效率,在匹配词串时利用第一字节和最后一个字节直接定位或者通过几级指针快速检索。
输入文本文件和输出文本文件都用一维数组进行存储,对空间的要求比较大,避免了多次文件的I/O操作。
主要文件有测试文件input.txt,输出文件output.txt,这里还有一个字典,就是每个词后面都有可能出现的词语,比如:人名,人民,人生···等ziguang.txt。
实现的部分源程序如下:
//不进行索引的单词
char *arrayEnglishStop[] = {
a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z,
1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
about, above, after, again, all, also, am, an, and, any, are, as, at,
back, be, been, before, behind, being, below, but, by,
can, click, do, does, done, each, else, etc, ever, every,
few, for, from, generally, get, go, gone, has, have, hello, here, how,
if, in, into, is, just, keep, later, let, like, lot, lots, made,
make, makes, many, may, me, more, most, much, must, my, need, no, not,
now, of, often, on, only, or, other, others, our, out, over, please, put,
so, some, such, than, that, the, their, them, then, there, these, they,
this, try, to, up, us, very, want, was, we, well, what, when, where,
which, why, will, with, within, you, your, yourself
};
//词典索引时,字或词不需要索引
char *arrayChineseStop[] = {
的,吗,么,啊,说,对,在,和,是,
被,最,所,那,这,有,将,会,与,
於,于,他,她,它,您,为,欢迎
};
//标点符号及汉字的标点符号,注意 + - 这三个符号,因为在有哪些信誉好的足球投注网站的时候需要通过他们进行异或等条件判断
char arrayAsciiSymbol[] ={
!,\\,*,(,),-,_,+,=,{,},[,],:,;,\,\,,,,,.,?,/,|,@,#,$,%,^,
};
//汉字词典
typedef struct _WORD_NODE
{
char strWord[MAX_CWORD_LEN+1];
// todo ,可以增加 两个字,三个字,四个字,五个字的数组,这样查起来
文档评论(0)