- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想运行 nltk
Punkt
来拆分句子。没有训练模型所以我单独训练模型,但我不确定我使用的训练数据格式是否正确。
我的训练数据是每行一个句子。我找不到关于此的任何文档,只有这个线程 ( https://groups.google.com/forum/#!topic/nltk-users/bxIEnmgeCSM ) 阐明了一些关于训练数据格式的信息。
NLTK
Punkt
句子分词器的正确训练数据格式是什么?
最佳答案
是的,Punkt tokenizer 是神奇的无监督句子边界检测。而且作者的姓氏也很酷,Kiss and Strunk (2006) .这个想法是使用NO annotation 来训练句子边界检测器,因此输入将是任何类型的明文(只要编码一致)。
要训练新模型,只需使用:
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()
为了获得更高的精度并允许您随时停止训练并仍然为您的分词器保存适当的 pickle,请查看这段用于训练德语句子分词器的代码片段,https://github.com/alvations/DLTK/blob/master/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()
的“默认”英语分词器之外,还有可用的预训练模型。他们在这里:https://github.com/evandrix/nltk_data/tree/master/tokenizers/punkt
请注意,预训练模型目前不可用,因为上面列出的 nltk_data
github 存储库已被删除。
关于python - NLTK punkt 的训练数据格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21160310/
我处理来自 AVFrame.data 的原始数据。此帧的像素格式为 AV_PIX_FMT_YUV420P。我想了解此数据位于哪个值范围内。 似乎 UV(在 YUV 方案中)必须在 [-128, 128
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 去年关闭。 Improve this questio
Google Web Toolkits (GWT) RPC 调用的数据格式如何以及 IsSerializable 对象如何传输。我知道 Java Serializable 传输某种二进制格式,但是 G
我打算建立一个简单的音频接口(interface)。为此,我只想知道 ASIO 驱动程序通常以哪种格式将数据传递给程序?我无法从规范中找出这一点,也无法在其他地方找到它。我不想编写自己的驱动程序,我只
我正在编写一个平滑流客户端应用程序。在服务器端(带有Media Services扩展的IIS 7)上,我有一堆ISMV和ISMA文件,这些文件是使用Expression Encoder pro 4预先
我使用 JSON.stringify 和 JQuery.ajax() 将以下 JSON 对象从 .jsp 页面传递到 java servlet: {"bin":[{"binId":"0","binDe
我有一些来自 VLM telnet 服务的数据: show media : ( 1 broadcast - 0 vod ) cam1 type : br
我们正在导出公钥和私钥。私钥将由用 Magic 编写的非 .net 软件使用。开发人员对导出 key 的格式有疑问。是否有白皮书或其他资源来解释导出数据的格式? 最佳答案 关于导出的 blob 类型的
如何在 Altair 中创建多线图? 特别是,我有一个 pandas 数据框,如下所示: Commit Author Date Week Adds
我的数据格式类似于此示例中使用的 flare.json: 我只是想知道 d3 可缩放图表使用什么函数 来获取这种格式的数据 在 flare.json 中是这样的 { name: "stuff",
我正在尝试创建一些 JSON 用于使用 Highcharts 显示图表 http://www.highcharts.com/ 我复制了他们的一个例子: http://www.highcharts.co
我被要求编写一个读取 BSDF data format defined by Zemax 的函数此类文件的示例可在以下页面找到:BSDF file example 如果可能的话,我想只使用标准的 if
我为 CoreML 将 UIImage 转换为 CVPixelBuffer,但我想更改 RGB 像素,如 R/1.5、G/2、B/2.5。 我可以使用assumingMemoryBound(to :
我正在开发一个项目,我想展示网站中的各种文件如何相互交互。我认为使用 D3 这将是一个相当简单的任务,但现在我想知道我的 json 数据是如何排列的。这是我的数据示例: { "pages" : [{
我正在使用 Apache POI 构建一些 Excel 文件,我想确保某些单元格的类型为“Number”。 我尝试了以下方法: style.setDataFormat(HSSFDataForm
我有一些具有小数属性的实体。这些实体的属性显示在我整个 UI 的多个位置。 目前我发现自己在做: litWeight.Text = person.Weight.ToString("0.00"); 无处
首先介绍三个注解: @JsonAutoDetect (method/field):作用于方法或字段,用来表明,当生成json的时候忽略有该annotation的方法或字段 @JsonIgnore 过滤
我是 Azure 的新手,一直在使用 Azure Monitor 和 AZ Sentinel 进行日志记录和分析部分。我的审核日志从 AZ VM 中托管的第三方供应商安全设备流向 Syslog VM。
我有一些代码,例如: CellStyle cs2 = wb.createCellStyle(); CellStyle cs4 = wb.createCellStyle(); cs4.setDataFo
我正在尝试提取 YourKit 的“线程” View 中显示的数据(关于线程状态;主要是当每个线程“等待”或“可运行”时)。我已使用命令行导出实用程序为其支持的所有 View 生成所有格式。 导出目录
我是一名优秀的程序员,十分优秀!