用于单词聚类/ NLP的PHP库?

vzw*_*ick 7 php nlp information-retrieval cluster-analysis

我想要实现的是一个相当简单的"获取搜索结果(如标题和简短描述),将它们集成到有意义的命名组"PHP程序中.

经过几个小时的谷歌搜索和SO的无数搜索(一如既往地产生有趣的结果,虽然没有什么真正有用)我仍然无法找到任何可以帮助我处理群集的PHP库.

  • 那里有一个我可能错过的PHP库吗?
  • 如果没有,是否有任何FOSS处理群集并具有合适的API?

Ala*_*air 5

像这样:

使用停用词列表,获取不在停用词中的所有单词或短语,计算每个词的出现次数,按降序排序.

停用词必须是所有常用英语术语的列表.它还应该包括标点符号,你需要首先将所有标点符号preg_replace成一个单独的单词,例如"Something,like this". - >"像这样的东西." 或者,您可以删除所有标点符号.

$content=preg_replace('/[^a-z\s]/', '', $content); // remove punctuation

$stopwords='the|and|is|your|me|for|where|etc...';
$stopwords=explode('|',$stopwords);
$stopwords=array_flip($stopwords);

$result=array(); $temp=array();
foreach ($content as $s)
if (isset($stopwords[$s]) OR strlen($s)<3)
 {
 if (sizeof($temp)>0)
  {
  $result[]=implode(' ',$temp);
  $temp=array();
  }            
 } else $temp[]=$s;
if (sizeof($temp)>0) $result[]=implode(' ',$temp);

$phrases=array_count_values($result);
arsort($phrases);
Run Code Online (Sandbox Code Playgroud)

现在,您有一个关联数组,按照输入数据中出现的术语频率的顺序排列.

您希望如何进行匹配取决于您,这在很大程度上取决于输入数据中字符串的长度.

我会看到前三个数组键中的任何一个是否与数据中任何其他前三个数组中的任何一个匹配.这些是你的团体.

如果您对此有任何疑问,请告诉我.