![](/img/trans.png)
[英]How can I chunk only the sentence has the following pattern <NN>*<PRP>*“run in” <NN> using NLTK in Python?
[英]How can I tag and chunk French text using NLTK and Python?
我在JSON文件中有30,000多個法語文章。 我想對單個文章和整個集合進行一些文本分析。 在我走得更遠之前,我從簡單的目標開始:
到目前為止我采取的步驟:
將數據導入python列表:
import json json_articles=open('articlefile.json') articlelist = json.load(json_articles)
選擇要測試的單個文章,並將正文文本連接成單個字符串:
txt = ' '.join(data[10000]['body'])
加載一個法語句子標記化器並將該字符串拆分為一個句子列表:
nltk.data.load('tokenizers/punkt/french.pickle') tokens = [french_tokenizer.tokenize(s) for s in sentences]
嘗試使用WhiteSpaceTokenizer將句子拆分為單詞:
from nltk.tokenize import WhitespaceTokenizer wst = WhitespaceTokenizer() tokens = [wst.tokenize(s) for s in sentences]
這是我被卡住的地方,原因如下:
對於英語,我可以像這樣標記和分塊文本:
tagged = [nltk.pos_tag(token) for token in tokens]
chunks = nltk.batch_ne_chunk(tagged)
我的主要選項(按當前偏好順序)似乎是:
如果我做(1),我想我需要創建自己的標記語料庫。 這是正確的,還是可以(並且允許)使用法國樹庫?
如果法國樹庫語料庫格式( 此處示例 )不適合與nltk-trainer一起使用,將它轉換為這種格式是否可行?
將NLTK的法語用戶采用PoS標簽和塊文本的方法是什么?
還有TreeTagger(支持法語語料庫)和Python包裝器。 這是我目前正在使用的解決方案,它的效果非常好。
從版本3。1。0(2012年1月)開始, 斯坦福PoS標記器支持法語。
應該可以在NLTK中使用這個法語標記器,使用Nitin Madnani的接口到斯坦福POS標記器
我還沒有嘗試過,但這聽起來比我考慮的其他方法更容易,我應該能夠在Python腳本中控制整個管道。 當我有分享的結果時,我會評論這篇文章。
以下是一些建議:
WhitespaceTokenizer
正在做它的意圖。 如果要分割撇號,請嘗試使用WordPunctTokenizer
,檢查其他可用的標記生成器,或使用Regexp標記生成器或直接使用re
模塊進行自我標記。
確保您已解決文本編碼問題(unicode或latin1),否則標記化仍會出錯。
正如您所發現的那樣,nltk只附帶英文標記器。 聽起來使用TreeTagger是最不起作用的,因為它(幾乎)准備好使用。
訓練自己也是一個實用的選擇。 但你絕對不應該創建自己的訓練語料庫! 使用現有的標記法語語料庫。 如果培訓文本的類型與您的域(文章)匹配,您將獲得最佳結果。 此外,您可以使用nltk-trainer,但您也可以直接使用NLTK功能。
你可以使用French Treebank語料庫進行培訓,但我不知道是否有讀者知道它的確切格式。 如果沒有,則必須從XMLCorpusReader開始並將其子類化以提供tagged_sents()方法。
如果你還沒有在nltk-users郵件列表中,我想你會想要加入它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.