簡體   English   中英

NLTK punkt 的訓練數據格式

[英]training data format for NLTK punkt

我想運行nltk Punkt來拆分句子。 沒有訓練模型,所以我單獨訓練模型,但我不確定我使用的訓練數據格式是否正確。

我的訓練數據是每行一個句子。 我找不到關於此的任何文檔,只有此線程 ( https://groups.google.com/forum/#!topic/nltk-users/bxIEnmgeCSM ) 闡明了有關訓練數據格式的一些信息。

NLTK Punkt句子分詞器的正確訓練數據格式是什么?

是的,Punkt 標記器是神奇的無監督句子邊界檢測。 而且作者的姓氏也很酷, Kiss and Strunk (2006) 這個想法是使用NO 注釋來訓練句子邊界檢測器,因此輸入將是任何類型的明文(只要編碼一致)。

要訓​​練新模型,只需使用:

import nltk.tokenize.punkt
import pickle
import codecs
tokenizer = nltk.tokenize.punkt.PunktSentenceTokenizer()
text = codecs.open("someplain.txt","r","utf8").read()
tokenizer.train(text)
out = open("someplain.pk","wb")
pickle.dump(tokenizer, out)
out.close()

為了獲得更高的精度並允許您隨時停止訓練並仍然為您的分詞器保存適當的泡菜,請查看此用於訓練德語句子分詞器的代碼片段, https://github.com/alvations/DLTK/blob/主/dltk/tokenize/tokenizer.py

def train_punktsent(trainfile, modelfile):
  """ Trains an unsupervised NLTK punkt sentence tokenizer. """
  punkt = PunktTrainer()
  try:
    with codecs.open(trainfile, 'r','utf8') as fin:
      punkt.train(fin.read(), finalize=False, verbose=False)
  except KeyboardInterrupt:
    print 'KeyboardInterrupt: Stopping the reading of the dump early!'
  ##HACK: Adds abbreviations from rb_tokenizer.
  abbrv_sent = " ".join([i.strip() for i in \
                         codecs.open('abbrev.lex','r','utf8').readlines()])
  abbrv_sent = "Start"+abbrv_sent+"End."
  punkt.train(abbrv_sent,finalize=False, verbose=False)
  # Finalize and outputs trained model.
  punkt.finalize_training(verbose=True)
  model = PunktSentenceTokenizer(punkt.get_params())
  with open(modelfile, mode='wb') as fout:
    pickle.dump(model, fout, protocol=pickle.HIGHEST_PROTOCOL)
  return model

但是請注意,句點檢測對拉丁句號、問號和感嘆號非常敏感 如果您要為不使用拉丁拼寫法的其他語言訓練 punkt 分詞器,您需要以某種方式破解代碼以使用適當的句子邊界標點符號。 如果您使用 NLTK 的 punkt 實現,請編輯sent_end_chars變量。

除了使用nltk.tokenize.sent_tokenize()的“默認”英語標記器nltk.tokenize.sent_tokenize()還有可用的預訓練模型。 它們是: https : //github.com/evandrix/nltk_data/tree/master/tokenizers/punkt

已編輯

請注意,預訓練模型目前不可用,因為上面列出的nltk_data github nltk_data庫已被刪除。

暫無
暫無

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

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