2011-04-08 73 views
9

我正在搜索處理文本句子的算法信息,或者在創建在諸如英語等正常人類語言中有效的句子時遵循結構。我想知道是否有這個領域的項目可以學習或開始使用。例如,如果我給一個程序一個名詞,爲它提供了一個詞庫(用於相關詞)和詞性(所以它理解每個詞在一個句子中的位置) - 它是否可以創建一個隨機的,有效的句子?計算機AI算法寫句子?

我確定有這種研究的許多子部分,所以任何導致這一點都會很好。

回答

1

寫隨機句並不難。任何解析器教科書的簡單英語語法示例都可以反向運行以生成語法正確的無意義句子。

另一種方式是字元組隨機行走,而流行的老BYTE雜誌的嘲弄,或類似的東西 http://www.perlmonks.org/index.pl?node_id=94856

9

這就是所謂的NLG(自然語言生成),儘管這主要是任務生成描述一組數據的文本。還有很多關於完全隨機的句子生成的研究。

一個起點是使用馬爾可夫鏈來生成句子。如何做到這一點是你有一個轉換矩陣,說明在每個詞類之間轉換的可能性有多大。你也有一個句子最可能的開始和結束詞性。把所有這些放在一起,你就可以生成可能的部分語音。

現在,你還沒有完成,這將首先不會提供一個很好的結果,因爲你只考慮相鄰單詞(也稱爲雙元)之間的概率,所以你想要做的是擴展這要在三個語音部分之間的轉換矩陣(這會生成一個3D矩陣並給出卦)之間尋找實例。根據處理能力以及您的語料庫是否可以填充此類矩陣,您可以將其擴展爲4克,5克等。

最後,您需要修補對象一致(主語 - 動詞 - 協議,形容詞 - 動詞 - 協議(儘管不是英語)等)和時態,以便一切都一致。

14

你正在尋找被稱爲自然語言生成,自然語言處理的一個分支 http://en.wikipedia.org/wiki/Natural_language_processing

句子生成是本場無論你想如何好句子,是很容易否則真的很難依據。目前,還沒有能夠針對特定名詞(即使是同義詞庫)生成100%明智句子的程序 - 如果這就是你的意思。

另一方面,如果您會對有時不合語法的廢話感到滿意,那麼您可以嘗試使用基於n-gram的句子生成器。這些只是將單詞鏈接在一起,有時會出現順序,3-4克生成器有時看起來相當不錯(儘管您會認爲它們會產生大量垃圾郵件)。

這裏有一個介紹基於n元一代的基礎知識,使用NLTK: http://www.nltk.org/book/ch02.html#generating-random-text-with-bigrams

+0

第二個鏈接需要驗證! – Skynet 2015-02-18 08:10:21

3

是。有一些工作涉及用AI技術解決NLG中的問題。據我所知,目前沒有任何方法可以用於實際應用。

如果您有背景知識,我建議您熟悉來自薩爾大學的亞歷山大科勒的一些作品。他介紹瞭如何將NLG編碼到PDDL。您要閱讀的主要文章是「作爲計劃問題產生句子」。

如果您在NLP中沒有任何背景知識,只需搜索Michael Collings或Dan Jurafsky在線課程或課程材料即可。