算法分析与设计的作业:“基于FMM的分词系统”
2011-05-02 17:21
375 查看
准备要截课了,于是乎按老师的要求做了一个简单的分词程序,程序主要是针对中文分词的。断断续续做了几天,感觉做得很一般,仅仅是完成了一些基本的功能。
采用机械分词中全切分的方法将句子进行切分,具体的描述看下边的文档:
本程序分为两个部分来实现:一、从海量数据中生成我们的数据字典我们使用一下这样的数据结构来存储我们收集到的数据信息:// 句子的内容:出现次数,内容,类型typedef struct _WORD_INFORMATION{ int nCount; string strWord; char szType; struct _WORD_INFORMATION *pNext;}WORD_INFORMATION, *P_WORD_INFORMATION;// 开散列结构typedef struct _OPEN_HASH{ int nMod; P_WORD_INFORMATION pNext;}OPEN_HASH, *P_OPEN_HASH; 为了提高程序快速收集和查询字典信息,这里我采用了开散列这样的数据结构,同时,为了避免在存储不同的信息的时候可能会造成信息冲突的情况,使用了拉链法处理冲突的情况。具体的做法是:从指定的数据文件中收集汉字的相关信息(出现次数和内容),然后将其统计的结果保存到另一个文件中,留给后边分词使用。生成字典文件的流程图如下:
二、依据数据字典对句子进行分词处理当我们得到之前生成的数据字典后,我们就可以依据数据字典的相关信息和句子的情况进行分词处理。这里,我使用FMM的全切分的方法来对句子进行切分。FMM:将句子从左向右扫描一遍,遇到字典里有的最长词就标识出来,遇到不认识的字串就分割成单字词。全切分:获得文本所有可能的切分结果,得到所有切分单元下边是一个例子:例句:“我是一个学生!”
切分结果如上图所示当我们获得句子的所有切分后,我们就可以根据切分的情况组成切分的句子。具体的选择过程如下:
从第一个切分汉字开始,选择它的最长切分结果作为第一个切分块,然后第二个,直到结束,就可得到最后的切分句子。 实验总结:通过本次实验,使我对自然语言处理中的中文分词技术有了一定的了解,并且对与之相关的应用有了进一步的认识,了解了在搜索引擎中和拼音输入法中使用的一些中文分词的相关技术,为后续课程的学习打下了一定基础。
采用机械分词中全切分的方法将句子进行切分,具体的描述看下边的文档:
本程序分为两个部分来实现:一、从海量数据中生成我们的数据字典我们使用一下这样的数据结构来存储我们收集到的数据信息:// 句子的内容:出现次数,内容,类型typedef struct _WORD_INFORMATION{ int nCount; string strWord; char szType; struct _WORD_INFORMATION *pNext;}WORD_INFORMATION, *P_WORD_INFORMATION;// 开散列结构typedef struct _OPEN_HASH{ int nMod; P_WORD_INFORMATION pNext;}OPEN_HASH, *P_OPEN_HASH; 为了提高程序快速收集和查询字典信息,这里我采用了开散列这样的数据结构,同时,为了避免在存储不同的信息的时候可能会造成信息冲突的情况,使用了拉链法处理冲突的情况。具体的做法是:从指定的数据文件中收集汉字的相关信息(出现次数和内容),然后将其统计的结果保存到另一个文件中,留给后边分词使用。生成字典文件的流程图如下:
二、依据数据字典对句子进行分词处理当我们得到之前生成的数据字典后,我们就可以依据数据字典的相关信息和句子的情况进行分词处理。这里,我使用FMM的全切分的方法来对句子进行切分。FMM:将句子从左向右扫描一遍,遇到字典里有的最长词就标识出来,遇到不认识的字串就分割成单字词。全切分:获得文本所有可能的切分结果,得到所有切分单元下边是一个例子:例句:“我是一个学生!”
切分结果如上图所示当我们获得句子的所有切分后,我们就可以根据切分的情况组成切分的句子。具体的选择过程如下:
从第一个切分汉字开始,选择它的最长切分结果作为第一个切分块,然后第二个,直到结束,就可得到最后的切分句子。 实验总结:通过本次实验,使我对自然语言处理中的中文分词技术有了一定的了解,并且对与之相关的应用有了进一步的认识,了解了在搜索引擎中和拼音输入法中使用的一些中文分词的相关技术,为后续课程的学习打下了一定基础。
相关文章推荐
- 基于词典的中文情感倾向分析算法设计
- 系统分析与设计作业lesson1
- 基于UML的Blog系统分析与设计之六------如何从用例描述中寻找类的属性
- 系统分析与设计——作业2
- 系统分析与设计——作业7
- 系统分析与设计_第二次作业
- 算法分析与设计课程作业第十八周#1
- 基于UML、面向对象的系统分析设计方法研究
- 研读《基于Hadoop的海量业务数据分析平台的设计与实现》----flume的数据收集系统的设计
- Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)
- 系统分析与设计 作业1
- 算法分析与设计课程作业第十七周#1#2
- 【系统分析与设计】作业一
- 基于UML的需求分析和系统设计个人体会
- 基于java最短路径算法公交查询系统的设计与实现
- 算法分析与设计课程作业第五周#1
- 算法分析与设计课程作业第二周#1
- 基于WEB的作业管理与批阅系统的毕业论文总结一:登录模块的设计
- 艾伟:基于web信息管理系统的权限设计分析和总结
- 基于UML的需求分析和系统设计