python – spacy用语料库中的数据创建新的语言模型

我想在spaCy中创建一个新的语言模型(卢森堡语),但我对如何做到这一点很困惑.

我遵循instructions on their website并做了与this post类似的事情.但我不明白的是,如何添加像词汇或wordvectors的数据. (例如“填写”语言模板)

我知道有一些dev tools用于相同的操作,但是他们的执行记录很少,所以我不知道如何正确安装和使用它们,特别是因为它们似乎在python 2.7中与我的spacy安装冲突,因为它使用Python3.

至于现在,我有一个我要训练的corpus.txt(来自wikipediadump)和一个语言模板,其中包含我创建并手工填充的默认值,如stop_words.py,tokenizer_exceptions.py等.

任何人都做得很好,可以帮助我吗?

解决方法:

spaCy中的“语言模型”有三个主要组成部分:Python中提供的“静态”语言特定数据(标记化异常,停用词,用于映射细粒度到粗粒度词性标记的规则),训练的统计模型用于预测词性标签,依赖性和命名实体(在大的标记语料库上训练并包括为二进制权重)和可选的单词向量,其可以在训练之前或之后为converted and added.您还可以使用像Gensim这样的库在原始文本上训练您自己的向量,然后将它们添加到spaCy.

spaCy v2.x允许您独立或随时训练所有管道组件,因此您可以在数据上训练标记器,解析器和实体识别器.所有这些都需要标记数据.如果您从头开始训练新语言,通常使用现有的树库.西班牙语Universal Dependencies语料库的Here’s an example(也是用于训练spaCy西班牙语模型的语料库).然后,您可以将数据转换为spaCy’s JSON format并使用spacy train命令训练模型.例如:

git clone https://github.com/UniversalDependencies/UD_Spanish-AnCora
mkdir ancora-json
python -m spacy convert UD_Spanish-AnCora/es_ancora-ud-train.json ancora-json
python -m spacy convert UD_Spanish-AnCora/es_ancora-ud-dev.json ancora-json
mkdir models
python -m spacy train es models ancora-json/es_ancora-ud-train.json ancora-json/es_ancora-ud-dev.json

我不知道你的corpus.txt里有什么,它是完全标记还是只是原始文本. (我也不知道卢森堡语的任何现有资源 – 听起来很难找到!)如果您的数据被标记,您可以使用built-in converters之一或您自己的小脚本将其转换为spaCy的格式.如果您的语料库仅包含原始文本,则需要先将其标记,然后查看它是否适合训练一般语言模型.最终,这归结为实验 – 但这里有一些策略:

>为每个组件手动标记整个语料库 – 例如如果要训练标记器,则使用词性标记;如果要训练解析器,则使用依赖关系标签;如果要训练实体识别器,则实体跨越.你需要大量的数据 – 理想情况下,这是一个与Universal Dependencies类似的语料库.
>尝试教授现有的预训练模型卢森堡语 – 例如German model.这可能听起来很奇怪,但这并不是一种不常见的策略.你不是从头开始训练,而是用卢森堡语的例子训练现有的模型(理想情况下,直到它对你的卢森堡文本的预测足够好).您还可以通过在您的卢森堡文本上运行德语模型并提取和更正其错误来创建更多的培训数据(see here了解详细信息).

请记住,您也总是需要评估数据(在文档中也称为“开发数据”).这通常是您在训练期间阻止的标记数据的随机部分,用于确定您的模型是否正在改进.

上一篇:如何将Python自然语言处理速度提升100倍:用spaCy/Cython加速NLP


下一篇:python – 将形容词转换为副词