NLP/机器学习文本比较[关闭]
Posted
技术标签:
【中文标题】NLP/机器学习文本比较[关闭]【英文标题】:NLP/Machine Learning text comparison [closed] 【发布时间】:2013-08-28 16:29:22 【问题描述】:我目前正在开发一个程序,该程序能够将小文本(比如 250 个字符)与类似文本的集合(大约 1000-2000 个文本)进行比较。
目的是评估文本 A 是否与集合中的一个或多个文本相似,如果是,则集合中的文本必须可以通过 ID 检索。每个文本都有一个唯一的 ID。
我希望输出有两种方式:
选项 1: 文本 A 与文本 B 的相似度为 90%,文本 C 的相似度为 70%,以此类推。
选项 2: 文本 A 匹配文本 D 相似度最高
我在学校读过一些机器学习,但我不确定哪种算法最适合这个问题,或者我是否应该考虑使用 NLP(不熟悉该主题)。
有没有人建议使用什么算法或在哪里可以找到必要的文献来解决我的问题?
【问题讨论】:
【参考方案1】:这似乎不是机器学习问题,您只是在寻找一些文本相似性度量。选择一个后,您只需根据获得的“分数”对数据进行排序。
根据您的文本,您可以使用以下指标之一 (list from the wiki) 或定义您自己的指标:
汉明距离 Levenshtein 距离和 Damerau-Levenshtein 距离 Needleman-Wunsch 距离或 Sellers 算法 史密斯-沃特曼距离 Gotoh 距离或 Smith-Waterman-Gotoh 距离 蒙格埃尔坎距离 街区距离或L1距离或城市街区距离 Jaro-Winkler 距离 Soundex 距离度量 简单匹配系数 (SMC) 骰子的系数 Jaccard 相似度或 Jaccard 系数或 Tanimoto 系数 特沃斯基索引 重叠系数 欧几里得距离或 L2 距离 余弦相似度 变化距离 Hellinger 距离或 Bhattacharyya 距离 信息半径(Jensen-Shannon 散度) 偏斜发散 混淆概率 Tau 度量,Kullback–Leibler 散度的近似值 Fellegi 和 Sunters 指标 (SFS) 最大匹配数 背风距离上述某些(例如余弦相似度)需要将您的数据转换为矢量化格式。这个过程也可以通过多种方式实现,使用最简单的词袋/tfidf 技术。
List 本身远非完整,只是此类方法的一个草稿。特别是,有许多字符串内核,它们也适用于测量文本相似度。尤其是 Wordnet Kernel 可以基于最完整的英语语义数据库之一来衡量语义相似度。
【讨论】:
Tf-idf 是一个术语加权方案,FASTA 和 BLAST 是计算生物学包。 -1 来自***的不加批判的复制粘贴。 感谢您澄清您的反对意见,尽管这些方面很难被视为答案“错误”或“坏”的原因。 此外,余弦相似度、L1 和 L2 距离以及可能还有很多其他的不是在字符串上定义的,而是在特征空间(例如词袋)上定义的。调用这些字符串指标是相当牵强的。将调和平均值列为字符串度量是非常荒谬的。两根弦的调和平均值是多少? 我称它们为“文本相似性度量”,这似乎与矢量化格式的流行度量并不矛盾。我敢说,余弦相似度是在简单应用程序中测量文本相似度的最常用方法之一。【参考方案2】:听说有three approaches from Dr. Golden:
余弦角分离
汉明距离
潜在语义分析 (LSA) 或潜在语义索引 (LSI)
这些方法基于语义相似性。
我还听说一些公司使用名为Spacy 的工具来汇总文档以相互比较。
【讨论】:
以上是关于NLP/机器学习文本比较[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
概率/机器学习/文本挖掘/NLP技术学习路线图,值得收藏,附下载