授课 :

开发商业软件项目的能力

把复杂的问题分解成多个子问题是分而治之的思想,分而治之的思想同样也可以使用到编程过程中。对于复杂的程序,可以对程序的功能进行分解,将程序的功能分解成多个子功能,从而达到将复杂问题进行简化的目的。

文本相似性分析由多个模块构成,在开发过程中需要对这些模块进行管理,很有必要以项目方式开发文本相似性分析程序。

使用数据库的能力

项目训练的宗旨是贴近商业需求,在商业应用中语料一般都存储在数据库中,例如论文的查重、相似性新闻推荐等程序,都会从数据库中提取论文和新闻,然后与待比对的论文或新闻进行相似性分析。

把语料存储到数据库,需要您掌握MySQL数据库知识,能够将MySQL数据库安装到本机电脑或服务器,将语料存储到数据库,从数据库查询和读取语料等知识。在后面的训练中,我们假设您已经掌握了这些知识。

编写中文分词程序的能力

在项目学习实践过程中,要求同学们编写一个简单的中文分词程序,基本了解和掌握中文分词程序的编写过程。包括构建Trie词典树、词的匹配查找等技术。

Python分词工具很多,包括盘古分词、Yaha分词Jieba分词、清华THULAC等,这些分词程序都是开源软件,在许可协议下,可以免费使用这些分词程序。

在项目实际开发中,使用了Jieba分词。

词袋和TF_IDF模型的生成算法

分词程序将文本数据切分为单词序列,还需要对这些单词序列做进一步处理,将单词序列转换为字典,字典是一个集合对象,key是单词,value是一个整数ID,该整数ID在词典中唯一,它唯一标识词典中的一个单词。

生成字典后,编写生成词袋模型的程序,进一步改进算法,生成TF-IDF模型。

余弦相似度分析

对文本进行相似性分析,需要将文本内容转换为向量空间模型,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度。

文本是由若干单词构成的,若把文本内的每一个单词看作文本向量的一个维度,去掉一些没有意义的停用词(如的、地这样的虚词),然后计算每个单词在文本内出现的次数,就可以得到该文本的向量空间模型。

然后通过统计每个词在文本中出现的次数,得到了文本基于词频率特征的向量A和B,通过向量A和B夹角的余弦来判断向量A和B的相似度,判定规则是若两个向量平行或重合,我们认为这两个向量为1,若两个向量垂直或者说正交,我们认为这两个向量的相似度为0。

文本相似性分析技术

在自然语言处理(Natural Language Processing, NLP)中,经常会涉及到如何度量两个文本的相似度问题。

度量文本相似度包括如下三种方法:一是基于关键词匹配的传统方法,如N-gram相似度;二是将文本映射到向量空间,再利用余弦相似度等方法;三是深度学习的方法,如基于用户点击数据的深度学习语义匹配模型DSSM,基于卷积神经网络的ConvNet,以及目前state-of-artSiamese LSTM等方法。

项目采用余弦相似度方法来度量文本的相似度。余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。

中文分词技术

一个中文文本从形式上看是由汉字(包括标点符号等)组成的一个字符串。由字可组成词,由词可组成句子,进而由一些句子组成段、节、章、篇。可见,如果需要处理一篇中文语料,从中正确的识别出词是一件非常基础而重要的工作。

中文和英文不同,英文通常采用空格和标点符号将词隔开,具有天然的分隔符,对英文文本进行相似性分析时,词的获取非常简单。中文虽然句子之间有分隔符,但词与词之间没有分隔符,需要编写专门的分词程序,拆分句子获取单词。

项目概况介绍中文分词相关技术,并使用结巴分词对文本进行中文分词。

模型与算法

在机器学习中,通俗来说模型指代的是目标函数,算法则是求解该目标函数的方法。

用于度量文本相似度的词袋模型,是一个将单词在文本中出现的频率映射到向量的目标函数。求解该目标函数的方法就是算法。

定义了词袋模型和生成词袋模型的算法,就可以将文本中所有单词的出现频率映射为向量,该模型会有两类数据集合,一类数据集合是单词的出现频率,一类数据集合是与单词出现频率对应的向量。

项目应用到了词袋模型和TF-IDF模型,并设计了生成上述模型的算法。

添加一个评论

提交评论
  • 编程语言 : Python
  • 适合人群 : 对机器学习感兴趣
  • 项目难度 : 中级编程
  • 技能要求 : 熟悉Python编程
  • 编程指导方式: 微信群
  • 咨询: QQ号: 2980001