首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种老挝语文本主题分类方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:昆明理工大学

摘要:本发明公开了一种老挝语文本主题分类方法,属于自然语言处理和机器学习技术领域。本发明结合了N‑gram语言特征提取模型与朴素贝叶斯数学模型实现对老挝文章主题识别,在一定程度上消除了朴素贝叶斯的局限性。它认为条件独立假设,将文本看成是词袋子模型,不考虑词语之间的顺序信息,同时使用的unigram与bigram特征模型,提高了文本的识别率。

主权项:1.一种老挝语文本主题分类方法,其特征在于:所述方法具体步骤如下:Step1、利用网络爬虫技术对老挝文本进行爬取,分别收集了五个类别的文本:旅游、经济、政治、教育、其他,创建以类别命名的五个文件夹来存放每个类别的文本,然后对这些老挝文本进行文本预处理,去除一些无关分类的干扰词,以此构建语料库;Step2、利用python技术对语料库进行遍历,遍历上面创建的五个件夹,将文件夹名为标注,里面的文本为待训练数据,将标注与待训练数据分别存放到两个列表中,命名为class_list与data_list,处理完毕后将这两个列表转换为元组的形式{class_list,data_list};Step3、采用sklearn模块里选择了N-gram模式下CountVectorizer方法中的fitting函数,将data_list中的文本生成词袋模型CountVectorizerModel,通过词袋模型CountVectorizerModel将data_list中的文本转换为文本向量的形式,向量的形式为a,b,c,将class_list和处理后的data_list创建新的元组对其进行存放;其中a表示选取的特征词数,b为每个特征词对应的索引,c为b对应索引位置上每个特征词出现的次数;Step4、采用Sklearn提供的train_test_split函数,将Step3的元组划分训练集和测试集,将训练集输入到朴素贝叶斯模型中进行训练;将测试集采用sklearn提供的朴素贝叶斯模型中的score函数计算预测的准确度,通过该准确度的结果调整步骤Step3中采用fittting函数时选出的高频词的个数,以此获得训练好的老挝语文章主题识别模型的分类器;所述干扰词包括表情符、数字、空格、停用词;其中表情符、数字、空格采用正则表达式去除,停用词采用停用词表去除;所述朴素贝叶斯模型采用sklearn提供的MultinomialNB算法来实现: Y代表了类别、Ck代表第K个类别、xjl代表了j这个词出现的次数是l次、Xj代表了这个词,mk代表了K类别中总的词数量、n代表了K类别中所有不重复的词的个数,λ取为1,即拉普拉斯平滑。

全文数据:一种老挝语文本主题分类方法技术领域本发明涉及一种老挝语文本主题分类方法,属于自然语言处理和机器学习技术领域。背景技术随着网络的普及,网络的信息以指数级别进行增长。当用户在使用搜索引擎进行检索自己想要的信息时,网络的页面往往会返回成千上万有关的页面,而用户如何才能不用去一个个查看这些页面快速有效的定位到想要信息?这时主题识别充当了重要的角色,它可以利用我们事先训练好的分类器在用户输入有限的信息中定位到用户想要的内容的主题,来对用户进行有效的回应。朴素贝叶斯分类模型是一个历史悠久,有着坚实的理论基础的方法,同时处理很多问题时直接而又高效的方法,并且很多高级自然语言处理模型也可以从它演化而来。它可以将具有某种特征的条件下属于某类的概率转换为属于某类的条件下具有某种特征的概率,就可以结合我们的语料库来进行计算,也就是利用先验概率与似然概率来计算后验概率。但它有自己的不足之处,就是它认为所有的特征属性是条件独立的,相当于它将文本特征信息放入到一个词袋中不考虑词出现顺序的影响,这往往会忽略了很多的信息,对文本造成误解。发明内容本发明提供了一种老挝语文本主题分类方法,通过该方法识别出未知类别的老挝文章的主题。本发明的技术方案是:一种老挝语文本主题分类方法,所述方法具体步骤如下:Step1、利用网络爬虫技术对老挝文本进行爬取,分别收集了五个类别的文本:旅游、经济、政治、教育、其他,创建以类别命名的五个文件夹来存放每个类别的文本,然后对这些老挝文本进行文本预处理,去除一些无关分类的干扰词,以此构建语料库;Step2、利用python技术对语料库进行遍历,遍历上面创建的五个文件夹,将文件夹名为标注,里面的文本为待训练数据,将标注与待训练数据分别存放到两个列表中,命名为class_list与data_list,处理完毕后将这两个列表转换为元组的形式{class_list,data_list};Step3、采用sklearn模块里选择了N-gram模式下CountVectorizer方法中的fitting函数,将data_list中的文本生成词袋模型CountVectorizerModel,通过词袋模型CountVectorizerModel将data_list中的文本转换为文本向量的形式,向量的形式为a,b,c,将class_list和处理后的data_list创建新的元组对其进行存放;其中a表示选取的特征词数,b为每个特征词对应的索引,c为b对应索引位置上每个特征词出现的次数;Step4、采用Sklearn提供的train_test_split函数,将Step3的元组划分训练集和测试集,将训练集输入到朴素贝叶斯模型中进行训练;将测试集采用sklearn提供的朴素贝叶斯模型中的score函数计算预测的准确度,通过该准确度的结果调整步骤Step3中采用fittting函数时选出的高频词的个数,以此获得训练好的老挝语文章主题识别模型的分类器。所述干扰词包括表情符、数字、空格、停用词;其中表情符、数字、空格采用正则表达式去除,停用词采用停用词表去除。所述N-gram模式采用unigram与bigram相结合的方式。所述朴素贝叶斯模型采用sklearn提供的MultinomialNB算法来实现。本发明的有益效果是:1、本发明结合了N-gram语言特征提取模型与朴素贝叶斯数学模型实现对老挝文章主题识别,在一定程度上消除了朴素贝叶斯的局限性。它认为条件独立假设,将文本看成是词袋子模型,不考虑词语之间的顺序信息,同时使用的unigram与bigram特征模型,提高了文本的识别率。2、本发明的的特征值数量选取时,生成一个迭代循环,选取了可以使得分类准确率最高时候的数量800,将分类的准确率提高到最大。3、本发明选取了朴素贝叶斯的多项式模型,在多项式模型中考虑重复词语的情况。并且在多项式模型概率计算时如公式1,加入了拉普拉斯平滑技术,即将λ值设置为1,避免了不合理的0概率事件。如果训练样本很大时,计算条件概率时将每个分量加1造成的估计概率变化可以忽略,但这个方法可以方便有效地避免零概率问题。4、本发明查找了老挝语的停用词,去除了一些虽然出现频率很高但是对文本类别判断无关的词。这样就更加减少了我们训练模型判断分类的时间,速度非常快,提高了文本的分类效果。附图说明图1是本发明的流程图;图2为关于CountVectorizer的举例说明。具体实施方式下面结合附图和实施例,对本发明作进一步说明,但本发明的内容并不限于所述范围。实施例1:如图1-2所示,一种老挝语文本主题分类方法,所述方法步骤如下:Step1、利用网络爬虫技术对老挝文本进行爬取,总共爬取了五个类别的文本分别是:经济、政治、教育、旅游、一般。将它们分别存放到对应的五个文件夹中,文件夹以类别命名,以便于后来的检索与处理,然后对爬取的文章进行文本处理,去除一些无关分类的干扰词,以此构建语料库;进一步地,可以设置所述干扰词包括表情符、数字、空格、停用词;其中表情符、数字、空格采用正则表达式去除,停用词采用停用词表去除即将停止词表中出现的词进行去除。在去除一些无关分类的干扰词时使用的是正则表达式编码如下:u"^[\u0000-\u10ff]+$",编码对文本的每个字符进行匹配,它可以排除除了老挝文本以外的字符。下表1为爬取得老挝文本及每个类别的数量。表1:类别数量经济430政治731教育197旅游145其他28Step2、利用python技术对语料库进行遍历,遍历上面创建的五个文件夹,文件夹名为标注,里面的文本为待训练的数据,将标注与待训练数据分别存放到两个列表中,命名为data_list与class_list,处理完毕后将这两个列表转换为元组的形式,以便对应下一个模块数据接收的类型。下表2为部分data_list文本与class_list标注存放形式说明:表2:Step3、把文本输入到朴素贝叶斯模型进行概率计算前,需要将文本转换为向量的形式,模型才能对此进行识别。在这里选择了sklearn模块里特征提取的CountVectorizer的方法。CountVectorizer旨在通过计数来将一个文本转换为向量,CountVectorizer提供了N-gram的模式,它有很多模式,在此选择了unigram与bigram相结合的方式。unigram认为文本的词都是单个出现来构建向量,而bigram认为文本的词是以两个词为组合出现来构建词向量。这两个方式的结合不仅考虑了单个词对分类器效果的影响,同时也考虑组合词对文本分类的影响。在进行转换前需要先使用CountVectorizer中的fitting函数,它可以根据输入训练集中词的词频排序选出前几个高频词生成一个类似于词袋模型CountVectorizerModel,模型将高频词的索引,作为之后需要进行文本到向量转换的映射标记。我们可以根据Step5计算出来的准确度来相应的调整高频词的选取。根据多次结果计算,当特征数选择800有一个比较高的准确度。CountVectorizer也就是生成一个a,b,c形式的文本向量。a表示选取的特征词数,b为每个特征词对应的索引,c为b对应索引位置上每个特征词出现的次数。CountVectorizer同时也提供了transform方法,它依据前面训练出的词袋模型CountVectorizerModel对接下来输入的文本转换为文本向量,这些文本向量为接下来进行朴素贝叶斯模型的输入提供了基础。将data_list中的文本输入到CountVectorizer处理后可以得到一个词袋模型CountVectorizerModel,它就可以对以后想进行朴素贝叶斯模型预测的文本转换为词向量。如图2为CountVectorizer的举例说明,图左侧的Array代表了输入文本,而图右侧代表了经过CountVectorizer处理后的词向量模型:现在就可以利用这个词袋模型对data_list中每个文本进行转换为对应的词向量,至此把所有的文本数据转换为了朴素贝叶斯模型可以识别的数据。参照表二经过Step3处理后的文本将变成如下表3:表3:Step4、接下来可以将这些数据输入到朴素贝叶斯模型中进行训练。在训练之前,我们需要对数据进行划分。而Sklearn提供了train_test_split函数,它可以随机将处理后的data_list数据进行划分为训练集与测试集,我们将data_list数据与对应标注的class_list数据划分为85%的训练集与15%的测试集分别存放。训练集用来进行朴素贝叶斯模型的训练,测试集是用来验证模型精度的。在这里选择的朴素贝叶斯是sklearn提供的MultinomialNB算法来实现。MultinomialNB假设特征的先验概率为多项式分布,即如公式1:Y代表了类别、Ck代表第K个类别、xjl代表了j这个词的出现了l次、Xj代表了这个词,mk代表了K类别中总的词数量、n代表了K类别中所有词的个数重复词算出现一次、λ常常取为1,即拉普拉斯平滑,可以避免得到的概率为0保证每个n-gram在训练语料中至少出现1次。在MultinomialNB算法中我们考虑重复词语的情况,也就是说,重复的词语我们视为其出现多次。此公式在本实例视角下可以这样理解,以计算P苹果|s为例:Step5、之后利用sklearn提供的朴素贝叶斯模型中的score函数进行计算预测的准确度,首先将测试集输入到score函数中就可以得到准确度,它会依据MultinomialNB模型来对测试集进行预测它的类别,然后根据预测类别与真实类别来计算准确度,至此老挝语文章主题识别模型的分类器就训练完成。Step6、当我们需要对一篇老挝文本主题识别分类器进行预测时,可以利用sklearn的朴素贝叶斯模型提供的predict函数来对文本进行判断属于什么类别,predict函数会根据已经Step5训练好的MultinomialNB模型来进行预测。在对待预测文本输入到模型前时依旧先要将文本转换为文本向量,也就是利用特征提取器CountVectorizer,将文本对应到文本向量空间中生成文本向量。然后将文本向量输入到朴素贝叶斯的predict函数中就可以预测它属于哪个类别。在将文本向量输入到分类器中时,分类器将根据文本向量计算它在五个类别:旅游、经济、教育、政治、其他中的条件概率,如公式2。在实例中本公式可以这样理解,以计算Text1属于经济的概率:X就是要进行判别的文本向量,Yi是类别。类别条件概率PX|Yi是所有属性上的联合概率,而又训练的样本有限,因此朴素贝叶斯采用了属性条件独立性假设,因此对于公式2可以改写为如下的公式3:其中d为属性数目,xj为x在第j个属性上的取值。在实例中本公式可以这样理解xj代表Text1中的第j个词:而在计算Pxj|c时使用公式1进行。因为计算每个类别的条件概率它们拥有相同的分母,因此只要计算分子,即公式4即可。在公式3中分别进行计算旅游、经济、教育、政治、其他中的条件概率,然后比较谁的概率较大就判别为哪个类别。上面结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

权利要求:1.一种老挝语文本主题分类方法,其特征在于:所述方法具体步骤如下:Step1、利用网络爬虫技术对老挝文本进行爬取,分别收集了五个类别的文本:旅游、经济、政治、教育、其他,创建以类别命名的五个文件夹来存放每个类别的文本,然后对这些老挝文本进行文本预处理,去除一些无关分类的干扰词,以此构建语料库;Step2、利用python技术对语料库进行遍历,遍历上面创建的五个件夹,将文件夹名为标注,里面的文本为待训练数据,将标注与待训练数据分别存放到两个列表中,命名为class_list与data_list,处理完毕后将这两个列表转换为元组的形式{class_list,data_list};Step3、采用sklearn模块里选择了N-gram模式下CountVectorizer方法中的fitting函数,将data_list中的文本生成词袋模型CountVectorizerModel,通过词袋模型CountVectorizerModel将data_list中的文本转换为文本向量的形式,向量的形式为a,b,c,将class_list和处理后的data_list创建新的元组对其进行存放;其中a表示选取的特征词数,b为每个特征词对应的索引,c为b对应索引位置上每个特征词出现的次数;Step4、采用Sklearn提供的train_test_split函数,将Step3的元组划分训练集和测试集,将训练集输入到朴素贝叶斯模型中进行训练;将测试集采用sklearn提供的朴素贝叶斯模型中的score函数计算预测的准确度,通过该准确度的结果调整步骤Step3中采用fittting函数时选出的高频词的个数,以此获得训练好的老挝语文章主题识别模型的分类器。2.根据权利要求1所述的老挝语文本主题分类方法,其特征在于:所述干扰词包括表情符、数字、空格、停用词;其中表情符、数字、空格采用正则表达式去除,停用词采用停用词表去除。3.根据权利要求1所述的老挝语文本主题分类方法,其特征在于:所述N-gram模式采用unigram与bigram相结合的方式。4.根据权利要求1所述的老挝语文本主题分类方法,其特征在于:所述朴素贝叶斯模型采用sklearn提供的MultinomialNB算法来实现。

百度查询: 昆明理工大学 一种老挝语文本主题分类方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。