利用语料库数据建立新的语言模型

2024-10-04 09:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在spaCy中创建一个新的语言模型(luxemborgish),但我不知道如何做到这一点。在

我跟着instructions on their website做了一件与this post相似的事情。但我不明白的是,如何添加像vocab或wordvectors这样的数据。(例如“填充”语言模板)

我知道这些操作中有一些dev tools,但它们的执行没有很好的文档记录,所以我不知道如何正确地安装和使用它们,尤其是在python2.7中,它与我的spacy安装冲突,因为它使用python3。在

至于现在,我有一个corpus.txt(来自wikipediadump),我想在上面进行训练,还有一个语言模板,默认值为stop_words.pytokenizer_exceptions.py等,我手工创建并填充。在

有没有人能帮到我?在


Tags: py模型模板语言spacyonwebsitethis
1条回答
网友
1楼 · 发布于 2024-10-04 09:19:09

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

spacyv2.x允许您独立或在运行中训练所有管道组件,因此您可以在数据上训练标记器、解析器和实体识别器。所有这些都需要标记数据。如果你从头开始训练一门新的语言,你通常会使用现有的树库。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的格式。如果你的语料库只由原始文本组成,你需要先给它加上标签,看看它是否适合训练一个通用的语言模型。归根结底,这可以归结为实验——但以下是一些策略:

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

请记住,您也始终需要评估数据(在文档中也称为“开发数据”)。这通常是您的标签数据中的随机部分,您在培训期间会保留这些数据,并用于确定您的模型是否正在改进。在

相关问题 更多 >