前言
人与计算机的交互过程中,如果能提供人类的自然语言形式来进行交流,那人与计算机就能更加亲密友好。而要实现这一机制就需要自然语言处理来处理,一般来说自然语言处理会涉及几个学科:计算机科学、语言学、统计学和数学等。
不同语言的自然语言处理也存在差别,对于中文来说,很多时候都无法直接套用英语自然语言处理中相对成熟的理论。有很多基础工作也是需要我们自己去做,这就包括了中文相似度。
相似度
中文相似度按照长度可以有字与字的相似度、单词与单词的相似度、句子与句子的相似度、段落与段落的相似度和文章与文章的相似度。
传统相似度的衡量计算一般可以使用编辑距离算法、余弦值法、SimHash法、n-gram法、汉明距离法、最长公共子串法、最长公共子序列法等等。
相似度计算方法总的可以归为两类,一类是基于统计的方法,一般用于句子段落这些较大粒度文本。另一类是基于语义的方法,一般用于词语或句子等较小粒度文本。
应用场景
中文相似度应用广泛,
- 比如在信息检索中,信息检索系统中为了能召回更多与检索词语相似的结果,可以用相似度来识别相似的词语,以此提高召回率。
- 比如在自动问答中,自动问答与检索系统主要的不同的是自动问答可以使用自然语言交互,而检索系统一般是通过关键词进行搜索。而且响应也不同,自动问答给出一个准确唯一的答案作为响应,而检索系统的响应一般有很多相关的结果。相似度在这里可以用来计算用户以自然语言的提问问句与语料库中问题的匹配程度,那么匹配度最高的那个问题对应的答案将作为响应。
- 比如在机器翻译中,会分析语句的相似度来完成双语的翻译,能否准确定义并计算相似度将影响翻译的效果,最简单的相似性分析就是直接利用语句中每个词的语法和语义来分析,而如果要更进一步分析的话则是先分析语句的依存树,然后再计算相似度。
- 比如在自动文摘中,在提取文摘的过程中要利用相似度对语义相似的句子进行抽取。
- 比如NLP其他应用领域。
总结
从某种程度上来说,如果能定义一个较好的相似度计算方式,并且能有一个较好的准确性,那么基本就能解决很多NLP领域文本相关的问题。
=============广告时间===============
公众号的菜单已分为“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”等,可能有一款适合你的胃口。
鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以购买。感谢各位朋友。
=========================
相关阅读:
欢迎关注: