分类：电脑/网络-软件
问题：好人来帮忙啊,急啊!!说说思路就可以啊现在我在做论文,题目是文献 
现在我在做论文,题目是文献关键词自动生成,目前已经分词成功,分词状况在附件里,是以很多个TXT文件保存的,下面的一步是要编码,需要为每个单词赋予唯一的编码，比如"我们学习原理。"和"我们学习操作系统"这两句话分词后编码就是"1 2 3 4""1 2 5"，因为"我们"和"学习"前面出现过，就不必再赋予新的编码。可是我不知道用什么来编码,小两数据可以用1 2 3...来编,可是是海量词汇啊,再说了,要怎么做才能知道哪个词是不是被编过码了,并且还要知道被编的编码是什么.怎么储存这些信息呢???指点,我没做过东西,请说的详细一点.谢谢,我献我的全部分了
回答：对于分配编码,你可以使用一个int变量,通过逐一递增来产生编码!在对分词进行编码时,为了能知道哪些分词已经完成编码,你需要建立一个集合,将所有已经分配编码的分词加进该集合,然后通过判断该分词是否在集合中来判断分词是否已经进行了编码。当然集合中的分词需要创建一种数据结构来存储,这样就可以存储与该分词相关的信息。如:分词={分词字符,编码}以C++为例:-----------------------------------------------------------#include<map>#include<string>//usingnamespacestd;classPhrase{public://分词conststd::stringChars;//编号constintID;Phrase(conststd::string&vChars,intvID):Chars(vChars),ID(vID){}};classHandledPhrases{ ::map<std::string,Phrase*>_List; ():_NextID(0){}~HandledPhrases(){std::map<std::string,Phrase*>::iteratorItr=_ gin();while(Itr!=_List.end()){deleteItr->second;++Itr;}}//分词是否已经处理了(就是编码)boolContains(conststd::string&vChars){return_ nd(vChars)!=_List.end();}//添加分词(如果该分词还未处理则进行编号病加入列表)voidAdd(conststd::string&vChars){if(Contains(vChars)==false){Phrase*Tmp=newPhrase(vChars,NextID());_ sert(std::pair<std::string,Phrase*>(vChars,Tmp));}}//查找指定分词,返回Phrase指针(未找到返回0)Phrase*Find(conststd::string&vChars){std::map<std::string,Phrase*>::iteratorItr=_ nd(vChars);if(Itr!=_List.end()){returnItr->second;}return0;}//产生下一个编号intNextID(){return_NextID++;}};---------------------------------------------------------你可以创建HandledPhrases示例,并将所有分词加入该集合,其会对分词进行编号并存储起来。------------------------------------------------------以下是简单的C语言实现(代码较多,只贴出示例代码,其他文件在附件中)------------------------------------------------------#include<stdio.h>#include<stdlib.h>#defineMAX_PHRASE_LENGTH6/*最大分词长度为6个汉字*/#include"HandledPhrases.h"intmain(){HandledPhrasesPhrases;HandledPhrases_Create(&Phrases);/*初始化分词集合*//*我们学习原理我们学习操作系统*/HandledPhrases_Add(&Phrases,"我们");/*添加分词*/HandledPhrases_Add(&Phrases,"学习");HandledPhrases_Add(&Phrases,"数据库");HandledPhrases_Add(&Phrases,"原理");HandledPhrases_Add(&Phrases,"我们");HandledPhrases_Add(&Phrases,"学习");HandledPhrases_Add(&Phrases,"操作系统");HandledPhrases_Dump(&Phrases);HandledPhrases_Destroy(&Phrases);/*销毁分词集合*/system("Pause");return0;}-------------------------------------------------------输出:[分词]:操作系统[编码]:5[分词]:数据库[编码]:2[分词]:学习[编码]:4[分词]:原理[编码]:3[分词]:学习[编码]:1[分词]:我们[编码]:0------------------------------------------------------请仔细阅读代码,你一定能看懂的!