簡體   English   中英

如何使用NLTK和Python標記和分塊法語文本?

[英]How can I tag and chunk French text using NLTK and Python?

我在JSON文件中有30,000多個法語文章。 我想對單個文章和整個集合進行一些文本分析。 在我走得更遠之前,我從簡單的目標開始:

  • 識別重要的實體(人,地方,概念)
  • 發現這些實體在一段時間內的重要性(〜=頻率)發生了重大變化(使用文章序列號作為時間的代理)

到目前為止我采取的步驟:

  1. 將數據導入python列表:

     import json json_articles=open('articlefile.json') articlelist = json.load(json_articles) 
  2. 選擇要測試的單個文章,並將正文文本連接成單個字符串:

     txt = ' '.join(data[10000]['body']) 
  3. 加載一個法語句子標記化器並將該字符串拆分為一個句子列表:

     nltk.data.load('tokenizers/punkt/french.pickle') tokens = [french_tokenizer.tokenize(s) for s in sentences] 
  4. 嘗試使用WhiteSpaceTokenizer將句子拆分為單詞:

     from nltk.tokenize import WhitespaceTokenizer wst = WhitespaceTokenizer() tokens = [wst.tokenize(s) for s in sentences] 

這是我被卡住的地方,原因如下:

  • NLTK沒有可以將法語分成單詞的內置標記器。 白色空間不能很好地工作,特別是因為它不會在撇號上正確分離。
  • 即使我使用正則表達式分成單個單詞,也沒有法語PoS(詞性)標記符可用於標記這些單詞,並且無法將它們分成邏輯單元的意義

對於英語,我可以像這樣標記和分塊文本:

    tagged = [nltk.pos_tag(token) for token in tokens]
    chunks = nltk.batch_ne_chunk(tagged)

我的主要選項(按當前偏好順序)似乎是:

  1. 使用nltk-trainer訓練我自己的tagger和chunker。
  2. 使用TreeTagger的python包裝器只是這部分,因為TreeTagger已經可以標記法語,並且有人編寫了一個調用TreeTagger二進制文件並解析結果的包裝器。
  3. 完全使用不同的工具。

如果我做(1),我想我需要創建自己的標記語料庫。 這是正確的,還是可以(並且允許)使用法國樹庫?

如果法國樹庫語料庫格式( 此處示例 )不適合與nltk-trainer一起使用,將它轉換為這種格式是否可行?

將NLTK的法語用戶采用PoS標簽和塊文本的方法是什么?

還有TreeTagger(支持法語語料庫)和Python包裝器。 這是我目前正在使用的解決方案,它的效果非常好。

從版本3。1。0(2012年1月)開始, 斯坦福PoS標記器支持法語。

應該可以在NLTK中使用這個法語標記器,使用Nitin Madnani的接口到斯坦福POS標記器

我還沒有嘗試過,但這聽起來比我考慮的其他方法更容易,我應該能夠在Python腳本中控制整個管道。 當我有分享的結果時,我會評論這篇文章。

以下是一些建議:

  1. WhitespaceTokenizer正在做它的意圖。 如果要分割撇號,請嘗試使用WordPunctTokenizer ,檢查其他可用的標記生成器,或使用Regexp標記生成器或直接使用re模塊進行自我標記。

  2. 確保您已解決文本編碼問題(unicode或latin1),否則標記化仍會出錯。

  3. 正如您所發現的那樣,nltk只附帶英文標記器。 聽起來使用TreeTagger是最不起作用的,因為它(幾乎)准備好使用。

  4. 訓練自己也是一個實用的選擇。 但你絕對不應該創建自己的訓練語料庫! 使用現有的標記法語語料庫。 如果培訓文本的類型與您的域(文章)匹配,您將獲得最佳結果。 此外,您可以使用nltk-trainer,但您也可以直接使用NLTK功能。

  5. 你可以使用French Treebank語料庫進行培訓,但我不知道是否有讀者知道它的確切格式。 如果沒有,則必須從XMLCorpusReader開始並將其子類化以提供tagged_sents()方法。

  6. 如果你還沒有在nltk-users郵件列表中,我想你會想要加入它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM