2011-03-27 64 views
5

我需要建立一个php词典,它会找到一个词的词根。例如,搜索“汽车”,它会告诉“汽车是复数车” 或“拿”,它是“过去式”找到一个词的词根

我正在考虑使用Wordnet,但它似乎很复杂。

有什么建议吗? m绝望

关心;

+1

这是非常广阔。建立字典的哪个方面是你的问题?使用第三方服务可能是一个不错的选择,因为这可能会变得非常复杂,直到你有一个工作解决方案。 – 2011-03-27 17:02:34

+0

是的,我也在考虑谷歌翻译和雅虎翻译等第三方服务。但是这样做会很慢,因为每次都向Google提出请求并返回给我。并且每天请求限制为每天5000个请求。我正在寻找PSpell和附魔,希望这可以帮助我。 – 2011-03-27 18:00:22

回答

1

嗯,这里是一个扩展,确实词干(我beleive这大约是你想要的): http://pecl.php.net/package/stem

它不会做任何工作语法分析,但是。

这里是php-唯一版本:http://www.chuggnutt.com/stemmer.php

+0

感谢FractalizeR!这就是我想要的!看完词干后,我认为所有单词及其关系(例如,采取,采取,采取,采取,鼠标,鼠标,汽车,汽车...)的数据库将更快因为它只是在数据库中查找。有什么建议? – 2011-03-28 03:54:56

+0

鉴于单词“苍蝇”,Porterstemmer的答案是“fli”并给出“采取”,porterStemmer给了我“采取”......它似乎正常工作正常,但不适用于不规则情况 – 2011-03-28 04:19:05

5
+0

谢谢FratalizeR!我认为我的问题是与lemmatizer。 Stemmer不能帮助我。它需要字典才能在不规则的情况下工作。例如,苍蝇 - >飞,采取 - >采取,老鼠 - >老鼠。只有字典检查可以正确解释这个 – 2011-03-29 04:13:23

+0

好的,我为你增加了一些链接。 – 2011-03-29 06:45:20

0

您可以在这里试用免费的Lemmatizer API:http://twinword.com/lemmatizer.php

向下滚动以找到Lemmatizer端点。

这会让你把“狗”变成“狗”,“能力”变成“能力”。

如果在POST传递或GET参数称为“文字”一个字符串,如“走进工厂”:

// These code snippets use an open-source library. http://unirest.io/php 
$response = Unirest\Request::post("[ENDPOINT URL]", 
    array(
    "X-Mashape-Key" => "[API KEY]", 
    "Content-Type" => "application/x-www-form-urlencoded", 
    "Accept" => "application/json" 
), 
    array(
    "text" => "walked plants" 
) 
); 

你得到这样的回应:

{ 
    "lemma": { 
    "plant": 1, 
    "walk": 1 
    }, 
    "result_code": "200", 
    "result_msg": "Success" 
}