php proximity脚本 - 如何计算2个给定术语/单词之间的单词/字符数?

时间:2011-04-07 13:43:36

标签: php proximity

基本上 - 我想计算各种术语的“接近度”。 “接近”我的意思是指它们之间的空格/字符/单词的数量。

示例:

术语= Word1 / Word2 Chunk =“ blah Word1 blah blah blah blah blah blah Word2 blah ” Proximity = Word1-Word2:5 脚本会看到2个术语,找到它们,然后根据它们之间的单词看到距离。

更高级的版本是检查语义结构 - 并确定术语是出现在同一语义元素,兄弟或父母等中。 因此,术语的邻近发现可以在同一段落内,或在连续的段落中,或在相同的“父”(标题)下,但在其他方面分开等。

此外 - 稍后介绍诸如词干/关系/探测之类的内容也可能有用。

我环顾网络(Google,这里,php论坛,php脚本网站)。 没有看到类似的东西。 我可以在一些类似(有限)的网站上看到工具 - 通常是基于SEO的工具。 我希望能够将其应用于“文本”...因为我可以将它应用于上传的word / txt文件等。

我没有看到任何真实的例子 - 所以我只能假设编码而不是琐事。

问题是 - 我该怎么做? 我如何处理单词的变体顺序(Word1 + Word2 / Word2 + Word1)? 我如何处理相同元素/结构内/外的识别接近度?

希望有人可以提出一些建议。

1 个答案:

答案 0 :(得分:2)

如果您需要对给定文本进行大量此类搜索,则可以首先将整个文本编入索引,该数据库包含单词,文本中的位置以及段落编号(如果需要)。然后,您可以选择所有Word1和Word2位置,并且推断最小距离不应该太难。

修改 这是一次尝试简单的一次性算法,而不使用数据库。

  1. 删除所有html和标点符号,只保留
  2. 字样
  3. 搜索第一次出现的Word1
  4. 计算单词(或字符或空格)的数量,直到您下次出现Word2
  5. 如果在到达Word2之前再次访问Word1,请重新启动计数器
  6. 记录距离,然后继续重复步骤2-5以获取其他出现的Word1和Word2