【问题标题】:what is the best method to calculate text similarity?计算文本相似度的最佳方法是什么?
【发布时间】:2020-03-03 15:06:00
【问题描述】:

有一些方法可以检索文本之间的相似性,例如 wup_similarity() cosine_similarity() 等。我的目的是制作一个论文答题系统。这意味着我想比较答题纸和评分方案。到目前为止,我在没有使用任何培训或建模方法的情况下进行了以下操作。

1.对两个文档进行预处理(删除标点符号、进行词形还原等)。

2.next 我通过使用 word-net syn-sets 得到相似的单词并制作了两个大数组(标记方案及其同义词和答题卡及其同义词)--可能不是正确的方法。

3.然后我需要比较这两个大数组,想得到相似度值

您能否通过提供一些建议或答案来帮助我。我知道 word-net syn-sets 不是最好的,因为它会给出不相关的答案。 例如:animal 和 vehicle 将返回 1 作为相似的值。

但是我需要为此找到解决方案。

【问题讨论】:

标签: python nlp nltk


【解决方案1】:

几乎每个搜索引擎都使用的标准方法是将 TF-IDF 向量与余弦相似度进行比较。这可能对您的任务不公平,因为您正在谈论给定评分方案的论文评估。这还包括检查重要命题的同一性(在动词-论证结构的意义上) 以及答案的修辞结构。这一点很重要,因为“哥伦布探索美洲大陆”可能在语义上与“美洲大陆探索哥伦布”相关,但后者显然是无意义的(在大陆为主体的情况下)。也许看看话语表示理论(DRT)和需要为它建模的形式逻辑。比较您的文本的 DRT 会做得更好,并且也适用于有争议的文本。

对于 DRT,您可能希望从以下内容开始:https://plato.stanford.edu/entries/discourse-representation-theory/#DRSLanSynSemAcc。它非常复杂,您的应用程序也是如此。另一种方法是使用依赖解析器从标记方案中提取最重要的命题,然后检查这些关系与一些论文答案相比有多少以及有多相似。为此,您可以使用关系(动词)和参数及其各自角色(“主题”和“对象”)的向量或嵌入的相似性度量。我认为在您使用完整的 DRT 之前尝试一下是值得的,因为要根据您的域定制它需要做大量的工作。

【讨论】:

  • 非常感谢,您能给我一些参考资料吗?这对我会有很大的帮助。
  • 实际上为了得到最重要的单词,我使用 django 创建了一个 web 界面。因此,首先我将标记方案标记为单词并为它们分配权重。然后我将这些权重保存在数据库中。在使用相似性测量比较文档之后,我使用加权和机制来添加权重来回答。我需要准确地测量相似度。我认为这会有所帮助。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 2020-07-08
  • 2011-03-06
  • 2017-02-28
  • 2020-05-26
相关资源
最近更新 更多