-4
問題: 詞幹刪除單詞後綴以將折曲(或有時衍生)的單詞減少到其基本或根形式。 例如「友善」是「朋友」的轉折。通過阻止(在這種情況下,詞幹意味着刪除後綴「ly」),「友好」被簡化爲「朋友」。 給定一個令牌列表和一個後綴列表 你的任務是到 編寫一個函數,打印到標準輸出(stdout),如果在後綴列表中找到後綴被刪除的所有標記(請在每行打印一個標記) 如果有多個可移除的後綴,請選擇最長的後綴 請注意,您的函數將收到以下參數: 標記 這是一個給出上述標記的字符串數組 後綴 這是一個給出上述後綴的字符串數組 數據約束 令牌數組的長度不會超過1000 後綴數組的長度不會超過100個 所有字符串比較是大小寫敏感的(即:酷=涼) 效率約束 您的功能預期打印請求的結果和在小於2秒 返回例 輸入輸出 查詢: 「友好」, 「離開」, 「強大」, 「中」 後綴: 「荷蘭國際集團」, 「立法院」, 「UL」, 「FUL」 朋友 明顯優於 功率 在 說明 對於「強大」一詞我們可以刪除後綴「ul」或「ful」,但我們選擇後者是因爲它是最長的。刪除單詞後綴以減少變形
我的代碼:
class MyClass {
public static void token_stemming(String[] tokens, String[] suffixes)
{
int count=0;
String[] stemmedList = new String[tokens.length];
for(int i=0; i<tokens.length; i++)
{
int length=0;int flag=0;
for(int j=0; j<suffixes.length; j++)
{
if(tokens[i].contains(suffixes[j]))
{
int strlength = tokens[i].length()-1;
int suflegnth = suffixes[j].length()-1;
for(int z=suffixes[j].length(); z>0; z--)
{
if(tokens[i].charAt(strlength--)==suffixes[j].charAt(suflegnth--))
{
}
else
{
flag=1;
}
}
if(length<suffixes[j].length() && flag==0)
{
length = suffixes[j].length();
}
}
}
stemmedList[count] = tokens[i].substring(0, tokens[i].length()-length);
System.out.println(stemmedList[count]);
count++;
}
}
}
我不完全確定你在找什麼,但標準詞幹是由馬丁波特。我在我的博客上有一個實現:http://programmingpraxis.com/2009/09/08/porter-stemming/。 – user448810
有很多詞幹。谷歌「雪球幹手」 – Bohemian