自动分词程序

来源:互联网 发布:广联达装饰预算软件 编辑:程序博客网 时间:2024/05/22 17:16

该程序用于自动分词。主要针对中文。

 

使用wchar_t类型,开始怎么都弄不对,后来才知道,要先setlocale(LC_ALL,"");……写这个程序让我充分感到了C的不足呀,有很好的思想,可是C实现不了……觉得C在文件处理方面貌似有点弱。标C又没有提供更多的函数……

 

以下是核心代码:

 

chead.h

 

 

cfile.c

 

 

其所调用的几个lib如下:

 

SingelCh_chProcess.lib

 

 

SingelNumProcess.lib

 

 

SingelCh_numProcess.lib

 

 

 

以下是解题报告:

 

切分举例1

 

一般情况:

 

中国/央行/首要//责任//币值//稳定//也就是说/防止/通货/膨胀//出现//防止/信贷//过度/扩张//

//昨日////G8//G20//全球/经济/治理//架构///原则///力量//论坛//表示//发展//问题/一直//中国//优先/问题//中央/银行//发展//起到//作用//是非/直接//角色//中国/央行/首先//责任//币值//稳定//也就是说/防止/通货/膨胀//出现//防止/信贷//过度/扩张//所以///一种//直接//方式//促进/发展///进一步/发展/提供/空间/

/ / //表示//央行//第二个角///就是/负责/确保/金融/市场//稳定//金融/市场//活动////储蓄/变成/生产//工作/以及/服务//需要//资金////主要//渠道/之一//此外//第三个/重要//作用///中央/银行/与其//货币/机构/合作//关注//预防/金融/市场/出现/危机/

/ / /统计//此前/披露//2///居民/消费/价格/(/CPI)/同比/上涨/2.7%///1//期定期/储蓄/利率/2.25%/////2//期定期/储蓄/利率//2.79%/相比/////一步之/////利率//时代/再次/来临///学者/预期//央行/////季度//////////////10///记者/////追问/////最后/如此/回应//

 

 

1:词典整理自北大标注《人民日报》1998.01月语料

2:以上切分材料源自新华网411日报道《周小川回应加息猜测 反问谁说要加息了》


4//7///长春/市政///奥运/冠军///举办/庆功///市委/书记/关切///////还有/什么/困难/////回答////父母//没有/工作////书记/当即/表态///相关/部门/领导////可以/解决////////信息/时报//4//8//

 

/ / //////父母//工作////再次///////感谢///之后////一次/陷入//舆论//漩涡//但是//一次/////举动///支持////民心///不少///直接/批评//////邀功//////一人/////////冠军//一种/荣誉///冠军///荣誉////成为//关系//工作/走后门//工具/

 

/ / /或许////清楚/自己//幸运///看到//许多/没有/机会/获得/冠军//运动///未来//退役////所长/收入/微薄//生活/困窘//或许///看到//一些/国内/冷门/世界/冠军/退役//////拮据/生活//所以////合适//时间/寻找/合适//条件///父母//一份/工作///////自己////努力/表达///父母//孝心/

 

/ / /自己/成为//世界/冠军//父母//权利/分享///荣誉/////荣誉////成为//父母//工作////////孝心/没有///错就错///表达/孝心//方式//////急匆匆/////父母//没有/工作///时候///也许/没有/意识//国人//不公//竞争////

 

/ / /也许/有人/认为///二代///可以/借助////资源//这个/社会////左右//////二代///为何/不可/利用/自己//资源/////人生///更为/舒坦//如果/这样//逻辑/可以/成立///一个人//想方设法/利用/自己//资源//自身//利益///福利///整个/社会//公平////建立///知道//他人//错误///////成为/我们/继续/错误/////挡箭牌/

 

注:以上材料选自人民网411《周洋的幸运不是社会的幸运》

切分举例2

 

1. 汉语重叠词的切分

///AA/

/这种/类型/几乎/适用//所有//重叠//////形容//重叠//红红//绿绿//名词/重叠//家家//人人//动词/重叠//看看//想想////重叠//一一//万万////重叠//个个//每每////重叠//偏偏//往往/////重叠//哈哈//呼呼/

 

////AABB/

/范围///AA////形容///主要/重叠/形式///形容//重叠//高高/兴兴//干干净净//名词/重叠//祖祖辈辈//风风雨雨//动词/重叠//说说/笑笑//吃吃喝喝////重叠//千千万万//三三两两////重叠//点点/滴滴//分分秒秒////重叠//多多/少少//时时/刻刻/////重叠//嘻嘻哈哈///滴答答/

 

////ABAB/

/这种/重叠//动词/重叠/居多///形容//重叠//雪白/雪白//崭新/崭新//动词/重叠//观赏/观赏//思考/思考////重叠//一人一人///字一字/////重叠//哗啦哗啦//丁冬丁冬/

 

////AAB/

//形容//重叠//冰冰///通通///名词/重叠//毛毛虫//跷跷板//动词/重叠//散散心//跳跳//////重叠//丁丁///咚咚//

 

////ABB/

//形容//重叠//孤零零//血淋淋//名词/重叠//山沟//////重叠//哗啦啦//咕咚咚/

 

////BAA/

/这个/形式/必须//实例/才能//明白//比如/亮晶晶//晶亮//区别///可以/一目了然////绝大多数//形容////形容//重叠//黑漆漆/

 

////ABA///BAB/

/这种/重叠/形式//存在//方言////各地/方言//有所/区别//       //看一看//走一走//做一做//乐一乐//聊一聊//

 

:切分材料节选自搜狐博客“出暖花开”之《2008-06-20 | ZT汉语重叠词》

重叠词切分中存在的问题:

1. 与字典冲突

如:词语“高高兴兴”中“高高”存在于词典中,因此“高高兴兴”被切分为“高高/兴兴”。

2. AAB

如:提提神,散散心能被正确切分。但若“刚刚”不存在于词典中,则“刚刚好“会被切错

同时,若“通通“存在于词典中,则”通通红“会被切错。

3. AA

如,“哈哈“应该被分为一个词语。但”哈哈哈“应该怎样切分?“哈哈哈哈哈哈哈”呢?

这里的做法是将“哈哈哈”切分为“哈哈/哈”,“哈哈哈哈哈哈哈哈”切分为“哈哈/哈哈/哈哈/哈哈/

总的来说:

属于重叠词的语素不应该位于词典中,同时,不属于重叠词的元素一定要位于词典中,否则不能被正确切分

 

 

切分举例2

 

2. 数字/日期etc.的切分

 

海关/数据/显示//今年/一季度/中国/外贸/进出//总值/6178.5/亿/美元///去年/同期/增长/44.1%//其中/出口/3161.7/亿/美元//增长/28.7%//进口/3016.8/亿/美元//增长/64.6%//

 

-3.3%//+3.3

/3/1//11/4/2010

/$12//12.2/

123,456,789.123/

 

3. 汉语文本中夹杂英语文本

a)     联想/收购//IBM/公司/90%//PC//personal/ /computer//业务//两家/皆大欢喜//

b)     //引起//Micro$oft//BOSS/先生/Mr./ /Gates/以及/AT&T/ /etc.//极大/不满//

c)      两家/联合/抵制/联想//U.S.(United/ /States/ /)/以及/UK//业务///简直//stupid///

问题总结:

汉语文本中所夹杂的英文文本的两个连续的单词须以空格隔开。如:U.S.(United/ /States/ /),US.(之间须有空格,否则程序会将U.S.( United作为一个带特殊符号的词,如AT&T

 

4. 汉语数量词

数量词的切分须有量词表辅助。

a)     /一个人/ /一个/大人/ /一个/小孩/ /一个/女孩/ /一个/男孩/ /一个/画家/ /一个/司机/ /一个/工人/

b)     /一只// /一只// /一只/猴子/ /一只// /一只/大象/ /一只// /一只// /一只/老鼠/

c)      /一个/脑子/ /一颗/脑袋/ /一根头// /一根/眉毛/ /一只/眼睛/ /一张// /一片/嘴唇/ /一颗/牙齿/ /

d)     /一棵// /一棵/白杨/ /一棵// /一棵// /一株/水稻/ /一株/麦子/ /一株// /一株/小草

e)     /一顿// /一顿/早饭/ /一份/早餐/ /一份/// /一份/晚餐

f)      /一道// /一道// /一片面包/ /一块/蛋糕/

g)     /一件/衣服/ /一件/上衣/ /一条/裤子/ /一个/口袋/ ///帽子/ /一条/围巾/ /一只/手套/ /一只/袜子/ / /一支// //// /一张// /一块// ///// /一台/电脑

h)     //// /一则/日记/ /一首// /一篇/文章/ ///照片/ /一张/照片/ //// /一台// /一道/命令/ /一首// /一支曲// /一篇/报告/ /一个// /一个// /一个句/

 

问题总结:对数量词的切分受量词表的限制,如某量词不存在于量词表中,则无法分出。如“////

 

5. 汉语数量短语

一万一/ /三千八百三/ /一亿零五十/ /三分之一/ /零点// /四点零三/ /四月十一日/ /十二时/ /三十分/

/五十秒/

 

6. 其他问题:

a)     姓名,地名,商店名,专有名词无法正确识别。(若不加入词典)

b)     依据所使用的字典的不同,对不同类型的材料切分效果不一致。受词典影响较大。

c)      切分算法效率不高,搜索速度较慢。

d)     对文档及词典编码要求较高。须为ANSI编码。词典格式定义为:所有词语已按照词长从大到小排序,每个词语占一行。词典中的词未经过词性标注等加工。

e)     对某些歧义,如组合型歧义,交集型歧义,根据其所处环境不同,可能产生不同分法。

Eg.  我们/三个人//网球///网球///个人///喜欢// (“个人存在于词典中)

我们/三个人//网球///网球///////喜欢// (“个人”不存在于词典中)