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

pjo*_*net 5 python windows nlp spacy

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

我按照他们网站上说明进行操作,并做了与此帖相似的操作.但我不明白的是,如何添加像词汇或wordvectors这样的数据.(例如"填写"语言模板)

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

至于现在我有一个corpus.txt(从wikipediadump)上,我想训练,并与默认像一个语言模板stop_words.py,tokenizer_exceptions.py我创建并手工填写等.

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

Ine*_*ani 10

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

spaCy v2.x允许您独立或随时训练所有管道组件,因此您可以在数据上训练标记器,解析器和实体识别器.所有这些都需要标记数据.如果您从头开始训练新语言,通常使用现有的树库.这是西班牙语的Universal Dependencies语料库的一个例子(也是用于训练spaCy的西班牙语模型的语料库).然后,您可以将数据转换为spaCy的JSON格式,并使用该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
Run Code Online (Sandbox Code Playgroud)

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

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

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