欢迎来到天天文库
浏览记录
ID:59194210
大小:1.02 MB
页数:20页
时间:2020-09-10
《文本挖掘模型.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、文本挖掘模型:本特征提取文本挖掘模型结构示意图1.分词分词实例: 提高人民生活水平:提高、高人、人民、民生、生活、活水、水平分词基本方法: 最大匹配法、最大概率法分词、最短路径分词方法1.1最大匹配法 中文分词在中文信息处理中是最最基础的,无论机器翻译亦或信息检索还是其他相关应用,如果涉及中文,都离不开中文分词,因此中文分词具有极高的地位。正向最大匹配法算法如下图:实例:S1="计算语言学课程是三个课时",设定最大词长MaxLen=5,S2=""(1)S2=“”;S1不为空,从S1左边取出候选子串W="计算语言学";(2
2、)查词表,“计算语言学”在词表中,将W加入到S2中,S2=“计算语言学/”,并将W从S1中去掉,此时S1="课程是三个课时";(3)S1不为空,于是从S1左边取出候选子串W="课程是三个";(4)查词表,W不在词表中,将W最右边一个字去掉,得到W="课程是三";(5)查词表,W不在词表中,将W最右边一个字去掉,得到W="课程是";(6)查词表,W不在词表中,将W最右边一个字去掉,得到W="课程"(7)查词表,W在词表中,将W加入到S2中,S2=“计算语言学/课程/”,并将W从S1中去掉,此时S1="是三个课时";(8)S1不为空,于是从S
3、1左边取出候选子串W="是三个课时";(9)查词表,W不在词表中,将W最右边一个字去掉,得到W="是三个课";(10)查词表,W不在词表中,将W最右边一个字去掉,得到W="是三个";(11)查词表,W不在词表中,将W最右边一个字去掉,得到W="是三"(12)查词表,W不在词表中,将W最右边一个字去掉,得到W=“是”,这时W是单字,将W加入到S2中,S2=“计算语言学/课程/是/”,并将W从S1中去掉,此时S1="三个课时";。。。。。。。。。。。。(21)S2=“计算语言学/课程/是/三/个/课时/”,此时S1=""。(22)S1为空,输
4、出S2作为分词结果,分词过程结束。代码如下:[cpp] viewplaincopy1.#include 2.#include 3.#include 4.#include 5.#include 6.using namespace std; 7.using namespace stdext; 8. 9.class CDictionary 10.{ 11.public: 12. CDictionary(); //将词
5、典文件读入并构造为一个哈希词典 13. ~CDictionary(); 14. int FindWord(string w); //在哈希词典中查找词 15.private: 16. string strtmp; //读取词典的每一行 17. string word; //保存每个词 18. hash_map wordhash; // 用于读取词典后的哈希 19. hash_map::iterator worditer; // 20.
6、 typedef pair sipair; 21.}; 22. 23.//将词典文件读入并构造为一个哈希词典 24.CDictionary::CDictionary() 25.{ 26. ifstream infile("wordlexicon"); // 打开词典 27. if (!infile.is_open()) // 打开词典失败则退出程序 28. { 29. cerr << "Unable to open input file: " << "wor
7、dlexicon" 30. << " -- bailing out!" << endl; 31. exit(-1); 32. } 1. while (getline(infile, strtmp, 'n')) // 读入词典的每一行并将其添加入哈希中 2. { 3. istringstream istr(strtmp); 4. istr >> word; //读入每行第一个词 5. wordhash.insert(sipair(
8、word, 1)); //插入到哈希中 6. } 7.} 8. 9.CDictionary::~CDictionary() 10.{ 11.} 12. 13.//在哈希词
此文档下载收益归作者所有