该程序用于自动分词。主要针对中文。
使用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:以上切分材料源自新华网4月11日报道《周小川回应加息猜测 反问谁说要加息了》
4/月/7/日/,/长春/市政/府/为/奥运/冠军/周/洋/举办/庆功/会/,/市委/书记/关切/地/问/周/洋/:/“/还有/什么/困难/?/”/周/洋/回答/:/“/我/父母/还/没有/工作/!/”/高/书记/当即/表态/:/“/相关/部门/领导/都/在/,/可以/解决/一/下/了/!/”/(/《/信息/时报/》/4/月/8/日/)
/ / /口/没/遮/拦/为/父母/要/工作/的/周/洋/再次/祸/从/口/出/,/“/感谢/门/”/之后/周/洋/又/一次/陷入/了/舆论/的/漩涡/。/但是/这/一次/,/周/洋/的/举动/却/让/支持/她/的/网/民心/凉/。/不少/网/民/直接/批评/周/洋/这/是/“/邀功/”/,/这/是/“/一人/得/道/鸡/犬/升/天/”/。/冠军/是/一种/荣誉/,/但/冠军/这/一/荣誉/并/不/能/成为/拉/关系/找/工作/走后门/的/工具/。
/ / /或许/周/洋/很/清楚/自己/的/幸运/,/她/看到/了/许多/没有/机会/获得/冠军/的/运动/员/的/未来/,/退役/后/一/无/所长/收入/微薄/的/生活/困窘/;/或许/她/也/看到/了/一些/国内/冷门/世界/冠军/退役/后/所/过/着/的/拮据/生活/。/所以/,/在/“/合适/的/时间/寻找/合适/的/条件/”/为/父母/找/一份/工作/,/这/也/是/她/尽/自己/最/大/的/努力/表达/着/对/父母/的/孝心/。
/ / /自己/成为/了/世界/冠军/,/父母/有/权利/分享/这/份/荣誉/,/但/这/份/荣誉/却/不/能/成为/为/父母/找/工作/的/砝/码/。/周/洋/的/孝心/没有/错/,/错就错/在/她/表达/孝心/的/方式/上/。/当/周/洋/急匆匆/地/说/出/“/父母/还/没有/工作/”/的/时候/,/她/也许/没有/意识/到/国人/对/不公/平/竞争/的/痛/恨/。
/ / /也许/有人/认为/“/富/二代/”/们/可以/借助/上/辈/的/资源/在/这个/社会/中/活/得/左右/逢/源/,/“/拼/二代/”/们/为何/不可/利用/自己/的/资源/让/上/一/辈/人生/活/得/更为/舒坦/?/如果/这样/的/逻辑/可以/成立/,/每/一个人/都/想方设法/利用/自己/的/资源/为/自身/的/利益/体/谋/福利/,/那/整个/社会/的/公平/又/从/何/建立/?/要/知道/,/他人/的/错误/和/沦/落/并/不/能/成为/我们/继续/错误/和/沦/落/的/挡箭牌/。
注:以上材料选自人民网4月11《周洋的幸运不是社会的幸运》
切分举例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. 我们/三个人/去/网球/场/打/网球/。/我/个人/并/不/喜欢/。/ (“个人”存在于词典中)
我们/三个人/去/网球/场/打/网球/。/我/个/人/并/不/喜欢/。/ (“个人”不存在于词典中)