2013-03-14 56 views
1

我有包含「字典單詞」和名稱的英文和德文文本。文本解析:區分「字典單詞」和名稱

例如「...在佛羅倫薩畫家萊昂納多建造...」

我有一個Java程序需要確定每個單詞是否是一個名稱或單詞的各自的語言。

例如名稱= {...,佛羅倫薩,萊昂納多,...},語言中的單詞= {...,在,在,畫家,建,...}

我看到兩種方法:

  1. 使用相應的字典列表,將其加載到散列結構中,查看該單詞是否在其中(語言單詞)或不是(名稱/拼寫錯誤)。

    問題/問題:

    我找不到這裏的名字被排除

    字flexions一個德語單詞列表(在德國複雜的)可能無法在列表中

  2. 使用服務/ api將單個單詞翻譯成另一種語言,查看該單詞是否被更改(語言單詞)或不是(名稱/拼寫錯誤)。

    問題/問題:

    名稱可能被翻譯爲好,例如佛羅倫薩> Florenz

    我找不到離線詞典列表/ api。所以我認爲使用在線服務是一條可行的路線,但像谷歌翻譯這樣的大公司並不是免費的。

當然,有些名稱與詞典詞相似,在兩種方法中它們都被識別爲詞典詞,它們都很好。

主要問題是:英語和德語中是否存在沒有名稱的綜合字典列表,充其量還有詞語彎曲?

或者: 有沒有一個免費的(在線)API來完成這項任務?還有其他解決方案嗎?

+0

我想通過測試它是否在字典或其他任何集合中來測試一個單詞是否是一個名字在計算上會花費相當大的代價。也許有一個啓發式,你可以申請測試,如果一個單詞可能是一個名字... – souldzin 2013-03-14 17:01:59

+0

我知道一個正在研究這個問題的人(德語語法分析和語法,他必須從單詞中識別名字)作爲他的AI博士..所以我不認爲有任何簡單的方法.. – 2013-03-14 17:10:47

+0

@SoulDZIN它沒關係,如果它快速完成。此外,查找散列中的單詞,例如哈希集合,即使充滿了萬字,也非常快。 – shokkokkok 2013-03-14 17:10:50

回答

0

您可以通過檢查第一個字母是否爲大寫字母來查找很多名稱。之後,你將排除所有跟蹤結束符的字符{「。」,「!」,「?」}。

假設它更多的是一個故事,假設一個名稱會出現多次是非常安全的。使用你已經找到的所有名字,並將它們對照在句尾結束後出現的所有大寫單詞列表進行檢查。添加那些平等的人。

第二部分應該只在你想要每一次發生而不只是發生的時候完成。

至少,我就是這麼想的。

編輯:我對德語不太熟悉,但我的方法確實會對德語有一些問題。請參閱Joop Eggen針對該語言的解決方案。

0

是的德語是一個問題,因爲非名詞名詞也是大寫。

雖然有一種語言屬性。儘管可以說「美麗的佛羅倫薩」(「dasschöneFlorenz」),但對於個人名稱,前面的文章/形容詞的用法非常罕見。也可以考慮複數的例外「Müllers」(「Müllers」)。

所以你只需要一個地理名稱等列表。

並檢測前面的文章/形容詞(der/die/das/...和-e/-en/-...)。

+0

我不是在尋找解析短語,而是單個孤立的單詞。因此,在您的示例中,如果算法將「the」標識爲語言詞並將「Müllers」標識爲名稱,那麼這將是可以接受的,這正是沒有名稱的字典哈希的用法將實現的。 – shokkokkok 2013-03-14 17:16:30

+0

另一方面,「Müller」(miller)將被識別爲字典單詞,這很好。 – shokkokkok 2013-03-14 17:28:34

+0

對不起,祝你好運。 – 2013-03-14 17:42:27