维基百科文章的字符串比较

时间:2013-04-22 07:57:50

标签: php data-mining wikipedia

我正在使用

检索维基百科类别的请求
http://en.wikipedia.org/w/api.php?format=json&action=query&prop=categories&cllimit=5000&titles=request

我接下来要做的是将每个类别的描述文章与我已经拥有的字符串进行比较,找出哪一个是最佳匹配。我想找到一个度量来计算考虑语义含义的2个文本之间的相似性,你知道任何一个库那样做或计算字符串之间的向量空间模型距离吗?

例如,请求http://en.wikipedia.org/w/api.php?format=json&action=query&prop=categories&cllimit=5000&titles=Machine%20learning返回下面看到的数组。我想将每个类别的每篇文章与一个字符串进行比较,找到最匹配的文章,在这种情况下,http://en.wikipedia.org/wiki/Machine_learning是第七个。

[categories] => Array
                                (
                                    [0] => Array
                                        (
                                            [ns] => 14
                                            [title] => Category:All articles needing additional references
                                        )

                                    [1] => Array
                                        (
                                            [ns] => 14
                                            [title] => Category:All articles with unsourced statements
                                        )

                                    [2] => Array
                                        (
                                            [ns] => 14
                                            [title] => Category:Articles needing additional references from February 2013
                                        )

                                    [3] => Array
                                        (
                                            [ns] => 14
                                            [title] => Category:Articles with unsourced statements from March 2013
                                        )

                                    [4] => Array
                                        (
                                            [ns] => 14
                                            [title] => Category:Cybernetics
                                        )

                                    [5] => Array
                                        (
                                            [ns] => 14
                                            [title] => Category:Learning
                                        )

                                    [6] => Array
                                        (
                                            [ns] => 14
                                            [title] => Category:Learning in computer vision
                                        )

                                    [7] => Array
                                        (
                                            [ns] => 14
                                            [title] => Category:Machine learning
                                        )

                                )

2 个答案:

答案 0 :(得分:1)

Levenshtein,它比较两个字符串并返回一个值,表明需要进行多少次更改才能使它们相同。

很容易就是我最喜欢的名为php的方法

http://php.net/manual/en/function.levenshtein.php

这只是两个简单字符串之间的直接比较,并且限制为255个字符,因此如果文本更长,您可能需要将文本剪切掉并以块的形式进行比较。

答案 1 :(得分:1)

信息检索中用于比较主题相似性的常用方法是余弦相似度(http://en.wikipedia.org/wiki/Cosine_similarity)。我认为这就是“矢量空间模型之间的距离”的意思。

有几个库实现(Lucene,Weka,Rapidminer,...)。如果需要,您也可以自己实现。

我希望这会有所帮助。