有一些方法可以检索文本之间的相似性,例如 wup_similarity() cosine_similarity() 等。我的目的是制作一个作文答题系统。这意味着我想比较答题卡和评分方案。到目前为止,我在没有使用任何训练或建模方法的情况下进行了以下操作。
1.预处理两个文档(删除标点符号,进行词形还原等)。
2.接下来我通过使用 word-net 同义词集得到相似的单词并制作了两个大数组(标记方案及其同义词和答题纸及其同义词)——可能不是正确的方法。
3.然后我需要比较这两个大数组,想得到相似度值
您能否通过提供一些建议或答案来帮助我解决这个问题。我知道 word-net 同义词集不是最好的,因为它会给出不相关的答案。 例如:animal 和 vehicle 将作为相似值返回 1。
但是我需要为此找到解决方案。
最佳答案
几乎每个搜索引擎都使用的标准方法是将 TF-IDF 向量与余弦相似度进行比较。这可能不会公正地完成您的任务,因为您正在谈论给定评分方案的论文评估。这还将包括检查重要命题的身份(在动词论元结构的意义上) 以及答案的修辞结构。这一点很重要,因为“columbus explored the American continent”可能在语义上与“the American continent explored Columbus”在语义上相关,但后者显然是无意义的(在大陆是主语的情况下)。也许看看话语表示理论 (DRT) 和需要为其建模的形式逻辑。比较你的文本的 DRT 会做得更好,也适用于议论文。
对于 DRT,您可能希望从以下内容开始:https://plato.stanford.edu/entries/discourse-representation-theory/#DRSLanSynSemAcc .它非常复杂,您的应用程序也是如此。另一种方法是使用依赖解析器从你的标记方案中提取最重要的命题,然后检查与一些论文答案相比有多少关系以及相似程度。为此,您可以使用向量的相似性度量或关系(动词)的嵌入以及具有各自角色(“主题”和“对象”)的参数。我认为在您使用完整的 DRT 之前尝试这样做是值得的,因为根据您的域定制它需要大量的工作。
关于python - 计算文本相似度的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58741873/