【问题标题】:spaCy process document with multiple languages多语言的 spaCy 流程文档
【发布时间】:2017-08-28 09:02:53
【问题描述】:

给定一个特定长度的文档字符串 s 和一个相同长度的语言掩码 l,我想使用相应的 spacy 语言模型处理文档的每个部分 (span?)。

举个例子

s = 'As one would say in German: Wie man auf englisch zu sagen pflegt'
l = ['en'] * 27 + ['de'] * 37

我想构建一个文档

import spacy
nlp_de = spacy.load('de')
nlp_en = spacy.load('en')

d_de = nlp_de(u"".join([c for i,c in enumerate(s) if l[i] == "de"]))
d_en = nlp_en(u"".join([c for i,c in enumerate(s) if l[i] == "en"]))

现在我必须以某种方式将这两个部分粘合在一起。但不幸的是,spacy 中的文档包含有关词汇的信息。因此,这将是模棱两可的。

我应该如何使用 spacy 为我的多语言文档建模?

【问题讨论】:

  • 我相信 spacy 有一个多语言模型,可以在一个模型中处理英语和德语。检查模型列表。
  • 但目前基于 spacy 文档的多语言:“维基百科语料库。分配命名实体。支持识别荷兰语、英语、法语、德语、法语、意大利语、波兰语的 PER、LOC、ORG 和 MISC 实体、葡萄牙语、俄语和西班牙语。”

标签: python data-structures nlp multilingual spacy


【解决方案1】:

对此有2个想法:

  1. code switch: 将一种以上的语言组合成(主要但不限于)口语文本。这不完全是你的例子。
  2. 像你这样的句子,是可分离的。

如果您的大部分文本更像您的示例,我会尝试按语言分隔文本(对于您的示例,我会生成 2 个句子并单独处理)。

如果是另一种情况,我不确定 spacy 是否内置了对 code-switch 的支持,如果没有,您需要构建自己的模型(或者只是尝试结合 spacy 的模型)取决于你的实际任务

【讨论】:

  • 感谢您的回答。我将再次研究语言的空间分布。我知道我的数据有大约三分之二的德语和三分之一的法语,并且很少出现其他语言,但我不知道它主要是句间还是两种语言的整个段落。目前,我不会将此标记为已接受的答案,因为我的问题更多是关于如何使用 spaCy 数据结构来解决这个问题
猜你喜欢
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多