Apertium + Python:词性标注器不提供表面形式

Apertium + Python: POS-tagger not providing surface form

我正在尝试使用 Apertium 的标注器对意大利语中的一些句子进行 POS-tag。 根据 Apertium GitHub page,除了形态分析之外,我还应该将表面形式作为输出,但我只得到了分析。我也想要表面形式。我无法推断它,因为标记器不一定标记单个标记,所以我不能简单地标记原始句子并循环它或用标记器的输出压缩它。

根据 GitHub 页面:

In [1]: import apertium
In [2]: tagger = apertium.Tagger('ita')
In [3]: tagger.tag('gatti').
Out[3]: [gatti/gatto<n><m><pl>]

我得到了什么:

In [1]: import apertium
In [2]: tagger = apertium.Tagger('ita')
In [3]: tagger.tag('gatti') # 'gatti' is the surface form
Out[3]: [gatto<n><m><pl>]

如何获得表面形态?如果我一次提供一个令牌,这将不是问题,因为我会知道令牌是什么。但是总而言之,我不知道标记器是如何创建块的。

默认情况下,在创建语言 ita 的标注器时,它会查找 /usr/share/apertium/modes/ita-tagger.mode。这是一个调用各种 apertium 命令的 shell 脚本。意大利语标记器脚本的命令恰好配置为不包括表面命令(它缺少 -p 选项)。

一个快速而肮脏的解决方案是 sudo vim /usr/share/apertium/modes/ita-tagger.mode(或 sudo nano 或任何你的编辑器)并添加 -p 到最后一个命令的末尾,这样文件看起来喜欢

lt-proc -w '/usr/share/apertium/apertium-ita/ita.automorf.bin' | cg-proc '/usr/share/apertium/apertium-ita/ita.rlx.bin' | apertium-tagger -g  '/usr/share/apertium/apertium-ita/ita.prob' -p

再做一次tagger = apertium.Tagger('ita')


无 sudo 的解决方案是复制模式文件,编辑并将其添加到搜索路径,请参阅 https://github.com/apertium/apertium-python#installing-more-modes-from-other-language-data