我正在尝试使用 Apertium 的标记器对意大利语中的一些句子进行词性标记。 虽然根据 Apertium GitHub 页面,除了形态分析之外,我还应该得到表面形式作为输出,但我只得到了分析。我也想要表面形状。我无法推断它,因为标记器不一定标记单个标记,所以我不能简单地标记原始句子并循环它或使用标记器的输出压缩它。
根据 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 $2 '/usr/share/apertium/apertium-ita/ita.prob' -p
然后再做一次
tagger = apertium.Tagger('ita')
。
无需 sudo 的解决方案是复制模式文件,编辑并将其添加到搜索路径,请参阅 https://github.com/apertium/apertium-python#installing-more-modes-from-other-语言数据