3

我正在开发一个应用程序,该应用程序正在从旧试卷中创建一个问题数据库。我想维护一个表格,在插入类似问题时将它们链接在一起。(我想到的表是修改后的预排序遍历树)。

我的要求是:

  1. 更改数字的单词问题应该链接在一起
  2. 专有名词/名称不同的单词问题应该联系在一起。
  3. XYZ、ABC、PQR、MNO 等价(例如三角形命名法)
  4. 忽略标点符号和连词以及“小词”。
  5. 标签!我用它的主题标记每个问题。数学问题与历史问题相似的可能性很小。但是化学热力学问题可能类似于物理热力学问题。

任何关于如何在算法方面进行的想法都将非常感激。

此外,我将处理包含数学符号的图像。我应该确保我所有的图像在“ALT”属性中都有 LaTeX,以确保它们可以被这个算法处理,还是有更好的方法呢?

4

2 回答 2

2

需要进行特征提取并阅读此内容。

数据挖掘的关键是预处理。您不能只是将硬盘扔给它并期望它找到任何有用的东西,但您需要通过适当地预处理数据来指导搜索。这可能是 90% 的工作。所以请阅读特征提取!

于 2012-07-20T06:41:55.400 回答
2

听起来你想在两个问题具有相同的句子结构时考虑它们是相似的,在去掉你希望改变的句法模式的洗衣清单之后。因此,这个问题看起来类似于在语料库中检测近乎重复的文档的问题。

一种方法是一种称为“simhashing”的技术。一个人需要一个(预处理的)文档并计算一个simhash指纹。与典型的哈希一样,指纹具有固定大小,看起来像二进制乱码。 典型的散列不同,文本相似的文档也将具有相似的指纹。通过选择指纹可以不同的最大(汉明)距离,您可以定义您认为“相似”的文档(问题)集群。

索引新问题的过程将如下所示:

  1. 规范化问题文本。这是一个标准的信息检索任务,它对每个人的意义都略有不同,但是像折叠空格、将所有内容都变成小写和剥离标点符号这样的转换是典型的。您可能还想将所有数字或专有名称的白名单转换为占位符(“NUMBER”、“NAME”等)
  2. 将生成的文本输入 simhash 实现以获取指纹。
  3. 在您的语料库中搜索足够靠近新指纹的指纹。这实际上比你想象的要有效地做起来要棘手。 谷歌想出了一个合理的方法,它可以归结为一个排序的指纹表,其中添加了一些人工指纹。
  4. 找到插入的问题应该被认为类似于的问题后,您可以随意丢弃重复的问题,坚持下去并做簿记等。

本书是一般信息检索的优秀入门读物。这是simhash 论文。这是一个计算simhashes的简单程序的手册页,如果您不想自己实现该算法,这可能是一个很好的起点。

于 2012-07-20T07:18:56.387 回答