NLP的成语智能检索系统

前言

    📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

本次分享的课题是

🎯NLP的成语智能检索系统

课题背景与意义

自然语言处理一直是人工智能领域的重要话题为了在海量文本中及时准确地获得有效信息,文本分类技术获得广泛关注,也给大家带来了更多应用和想象的空间。

课题实现技术思路

1.文本挖掘任务类型的划分

文本挖掘任务大致分为四个类型:类别到序列、序列到类别、同步的(每个输入位置都要产生输出)序列到序列、异步的序列到序列。

同步的序列到序列的例子包括中文分词,命名实体识别和词性标注。一部的序列到序列包括机器翻译和自动摘要。序列到类别的例子包括文本分类和情感分析。类别(对象)到序列的例子包括文本生成和形象描述。

2.文本挖掘系统整体方案

达观数据一直专注于文本语义,文本挖掘系统整体方案包含了 NLP 处理的各个环节,从处理的文本粒度上来分,可以分为篇章级应用、短串级应用和词汇级应用。

篇章级应用有六个方面,已经有成熟的产品支持企业在不同方面的文本挖掘需求:

  • 垃圾评论:精准识别广告、不文明用语及低质量文本。

  • 黄反识别:准确定位文本中所含涉黄、涉政及反动内容。

  • 标签提取:提取文本中的核心词语生成标签。

  • 文章分类:依据预设分类体系对文本进行自动归类。

  • 情感分析:准确分析用户透过文本表达出的情感倾向。

  • 文章主题模型:抽取出文章的隐含主题。

为了实现这些顶层应用,达观数据掌握从词语短串分析个层面的分析技术,开发了包括中文分词、专名识别、语义分析和词串分析等模块。

达观数据文本挖掘架构图

3.序列标注应用:中文分词

同步的序列到序列,其实就是序列标注问题,应该说是自然语言处理中最常见的问题。序列标注的应用包括中文分词、命名实体识别和词性标注等。序列标注问题的输入是一个观测序列,输出的是一个标记序列或状态序列。

举中文分词为例,处理「结合成分子」的观测序列,输出「结合/成/分子」的分词标记序列。针对中文分词的这个应用,有多种处理方法,包括基于词典的方法、隐马尔可夫模型(HMM)、最大熵模型、条件随机场(CRF)、深度学习模型(双向 LSTM 等)和一些无监督学习的方法(基于凝聚度与自由度)。

4.序列标注应用:NER

命名实体识别:Named Entity Recognition,简称 NER,又称作「专名识别」,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。通常包括实体边界识别和确定实体类别。

对与命名实体识别,采取不同的标记方式,常见的标签方式包括 IO、BIO、BMEWO 和 BMEWO+。其中一些标签含义是:

  • B:begin

  • I:一个词的后续成分

  • M:中间

  • E:结束

  • W:单个词作为实体

大部分情况下,标签体系越复杂准确度也越高,但相应的训练时间也会增加。因此需要根据实际情况选择合适的标签体系。通常我们实际应用过程中,最难解决的还是标注问题。所以在做命名实体识别时,要考虑人工成本问题。

5.英文处理

在 NLP 领域,中文和英文的处理在大的方面都是相通的,不过在细节方面会有所差别。其中一个方面,就是中文需要解决分词的问题,而英文天然的就没有这个烦恼;另外一个方面,英文处理会面临词形还原和词根提取的问题,英文中会有时态变换(made==>make),单复数变换(cats==>cat),词根提取(arabic==>arab)。

在处理上面的问题过程中,不得不提到的一个工具是 WordNet。WordNet 是一个由普林斯顿大学认识科学实验室在心理学教授乔治•A•米勒的指导下建立和维护的英语字典。在 WordNet 中,名词、动词、形容词和副词各自被组织成一个同义词的网络,每个同义词集合都代表一个基本的语义概念,并且这些集合之间也由各种关系连接。我们可以通过 WordNet 来获取同义词和上位词。

6.词嵌入

在处理文本过程中,我们需要将文本转化成数字可表示的方式。词向量要做的事就是将语言数学化表示。词向量有两种实现方式:One-hot 表示,即通过向量中的一维 0/1 值来表示某个词;词嵌入,将词转变为固定维数的向量。

word2vec 是使用浅层和双层神经网络产生生词向量的模型,产生的词嵌入实际上是语言模型的一个副产品,网络以词表现,并且需猜测相邻位置的输入词。word2vec 中词向量的训练方式有两种,cbow(continuous bags of word)和 skip-gram。cbow 和 skip-gram 的区别在于,cbow 是通过输入单词的上下文(周围的词的向量和)来预测中间的单词,而 skip-gram 是输入中间的单词来预测它周围的词。

7.文档建模

要使计算机能够高效地处理真实文本,就必须找到一种理想的形式化表示方法,这个过程就是文档建模。文档建模一方面要能够真实地反映文档的内容,另一方面又要对不同文档具有区分能力。文档建模比较通用的方法包括布尔模型、向量空间模型(VSM)和概率模型。其中最为广泛使用的是向量空间模型。

二、文本分类的关键技术与重要方法

1.利用机器学习进行模型训练

文本分类的流程包括训练、文本语义、文本特征处理、训练模型、模型评估和输出模型等几个主要环节。其中介绍一下一些主要的概念。

  • 文档建模:概率模型,布尔模型,VSM;

  • 文本语义:分词,命名实体识别,词性标注等;

  • 文本特征处理:特征降维,包括使用评估函数(TF-IDF,互信息方法,期望交叉熵,QEMI,统计量方法,遗传算法等);特征向量权值计算;

  • 样本分类训练:朴素贝叶斯分类器,SVM,神经网络算法,决策树,Ensemble 算法等;

  • 模型评估:召回率,正确率,F-测度值;

2.向量空间模型

向量空间模型是常用来处理文本挖掘的文档建模方法。VSM 概念非常直观——把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。

当文档被表示为文档空间的向量时,就可以通过计算向量之间的相似性来度量文档间的相似性。它的一些实现方式包括:

1)N-gram 模型:基于一定的语料库,可以利用 N-Gram 来预计或者评估一个句子是否合理;

2)TF-IDF 模型:若某个词在一篇文档中出现频率 TF 高,却在其他文章中很少出现,则认为此词具有很好的类别区分能力;

3)Paragraph Vector 模型:其实是 word vector 的一种扩展。Gensim 中的 Doc2Vec 以及 Facebook 开源的 Fasttext 工具也是采取了这么一种思路,它们将文本的词向量进行相加/求平均的结果作为 Paragraph Vector。

3.文本特征提取算法

目前大多数中文文本分类系统都采用词作为特征项,作为特征项的词称作特征词。这些特征词作为文档的中间表示形式,用来实现文档与文档、文档与用户目标之间的相似度计算。如果把所有的词都作为特征项,那么特征向量的维数将过于巨大。有效的特征提取算法,不仅能降低运算复杂度,还能提高分类的效率和精度。

文本特征提取的算法包含下面三个方面:

1)从原始特征中挑选出一些最具代表文本信息的特征,例如词频、TF-IDF 方法;

2)基于数学方法找出对分类信息共现比较大的特征,主要例子包括互信息法、信息增益、期望交叉熵和统计量方法;

3)以特征量分析多元统计分布,例如主成分分析(PCA)。

4.文本权重计算方法

特征权重用于衡量某个特征项在文档表示中的重要程度或区分能力的强弱。选择合适的权重计算方法,对文本分类系统的分类效果能有较大的提升作用。

特征权重的计算方法包括:

1)TF-IDF;

2)词性;

3)标题;

4)位置;

5)句法结构;

6)专业词库;

7)信息熵;

8)文档、词语长度;

9)词语间关联;

10)词语直径;

11)词语分布偏差。

其中提几点,词语直径是指词语在文本中首次出现的位置和末次出现的位置之间的距离。词语分布偏差所考虑的是词语在文章中的统计分布。在整篇文章中分布均匀的词语通常是重要的词汇。

5.分类器设计

由于文本分类本身是一个分类问题,所以一般的模式分类方法都可以用于文本分类应用中。

常用分类算法的思路包括下面四种:

1)朴素贝叶斯分类器:利用特征项和类别的联合概率来估计文本的类别概率;

2)支持向量机分类器:在向量空间中找到一个决策平面,这个平面能够最好的切割两个分类的数据点,主要用于解决二分类问题;

3)KNN 方法:在训练集中找到离它最近的 k 个临近文本,并根据这些文本的分类来给测试文档分类;

4)决策树方法:将文本处理过程看作是一个等级分层且分解完成的复杂任务。

6.分类算法融合

聚合多个分类器,提高分类准确率称为 Ensemble 方法。

利用不同分类器的优势,取长补短,最后综合多个分类器的结果。Ensemble 可设定目标函数 (组合多个分类器),通过训练得到多个分类器的组合参数 (并非简单的累加或者多数)。

我们这里提到的 ensemble 可能跟通常说的 ensemble learning 有区别。主要应该是指 stacking。Stacking 是指训练一个模型用于组合其他各个模型。即首先我们先训练多个不同的模型,然后再以之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。在处理 ensemble 方法的时候,需要注意几个点。基础模型之间的相关性要尽可能的小,并且它们的性能表现不能差距太大。

多个模型分类结果如果差别不大,那么叠加效果也不明显;或者如果单个模型的效果距离其他模型比较差,也是会对整体效果拖后腿。

🚀海浪学长的作品示例:

大数据算法项目

机器视觉算法项目

 

微信小程序项目

Unity3D游戏项目

最后💯

🏆为帮助大家节省时间,如果对开题选题,或者相关的技术有不理解,不知道毕设如何下手,都可以随时来问学长,我将根据你的具体情况,提供帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值