我正在尝试在spaCy中创建一个新的语言模型(卢森堡语),但我对如何做到这一点很困惑。
我关注了instructions on their website并做了与this post类似的事情。但我不明白的是,如何添加像词汇或wordvectors这样的数据。 (例如"填写"语言模板)
我知道有一些dev tools用于这些操作,但是它们的执行记录很少,所以我不知道如何正确安装和使用它们,特别是因为它们似乎在python 2.7中发生了冲突使用我的spacy安装,因为它使用python 3。
至于现在,我有一个corpus.txt
(来自wikipediadump)我想要训练的语言模板以及我创建的stop_words.py
,tokenizer_exceptions.py
等默认值的语言模板用手填充。
任何人都做得很好,可以帮助我吗?
答案 0 :(得分:8)
"语言模型有三个主要组成部分"在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
中的内容以及它是完全标记的还是仅原始文本。 (我也不知道卢森堡语的任何现有资源 - 听起来很难找到!)如果你的数据被贴上了标签,你可以使用其中一种格式将其转换为spaCy的格式built-in converters或你自己的小脚本。如果您的语料库仅包含原始文本,则需要先将其标记,然后查看它是否适合训练一般语言模型。最终,这归结为实验 - 但这里有一些策略:
请记住,您始终需要评估数据(也称为"开发数据"在文档中)。这通常是您在训练期间阻止的标记数据的随机部分,用于确定您的模型是否正在改进。