2015-10-13 51 views
3

在我花費大量時間學習概念之前,我想知道NLP和Python的NLTK是否可以幫助我通過簡單地提供文本並告訴它來訓練系統什麼類別適用。使用NLP讓系統學會對文本進行分類

比方說,我有大約100個文本,我想將它們分類到他們描述的業務中。有沒有一種方法可以爲每個文本系統指明正在描述哪些業務,然後讓該系統從長遠角度越來越精確地對新文本進行分類?

回答

2

總之:是的,那種。 NLTK可以很好地分解原始文本,去除停用詞(通常出現的詞,但沒有給出關於文本的大量有意義的見解)。您可以使用任何文本,將其標記並繪製每個單詞的頻率。然而,最常見的詞將是「the」,「of」,「for」等等:停用詞。這會給你一個很好的整體想法,但通常不夠好。所以你需要一些NLTK的分類。你可能想看看this

最常見的tf-idf是人們用於此目的。在您的案例中可能派上用場的另一個精彩套餐是gensim,其目標是完成您要查找的內容。其他軟件包有你可能想要看的部分,比如scikit-learn。

從長遠來看?這實際上取決於你可以投入多少資源,但(相對)簡單的方法是標記:貝葉斯定理。 100個文本是一個小數字,因此使用標記進行分類可能不會非常準確。

3

你所描述的是一個classification問題。要訓​​練分類模型,您需要使用NLTK自己的NaiveBayesClassifierscikit-learn中更先進的和可定製的模型之一。

Here is the documentation example for NLTK's NB classifier.

Here is an example for the Multinomial NB classifier from scikit-learn

兩種封裝提供給您的問題完整的解決方案。 NLTK爲您提供了所有的工具,可以在將您的文本饋送給培訓師或將他們投入訓練有素的模型進行分類之前,自行正確標記和解讀文本,並且還爲您提供了培訓算法。 Scikit-learn也會這樣做,只是略有不同:如果您需要做的只是標記化,預處理部分會更加自動化,並且您有更多選項可用於訓練模型。 See for yourself in this example.

有了這個,你應該有工具來完成工作。但是,如果你是新的,這裏有一些提示:

  1. 確保無論您預處理對訓練文本做什麼,你做的一樣好你將要進行分類後的文本。
  2. 想想獲取更大的訓練集,100個文本是不完全的「大數據」
  3. pickle模塊熟悉,如果你不知道它已經,這是會讓你節省模型您電腦。
  4. 如果您選擇使用scikit-learn,請嘗試用SVM替換MultinomialNB分類器並比較結果。 SVM通常更好。
0

我相信你在找什麼是Topic Modeling在NLP。Python有幾個庫可以做到這一點(但據我所知,不是NLTK)。查看這些gensim,GraphLablda

相關問題