2

我打算使用 WordNet 的 SQL 版本,但我在寻找一种方法来对词进行词形还原以便在数据库中找到它们时遇到了问题;我不能使用 WordNet lemmatizer 本身,因为它适用于 WorldNet 的文本版本。

我在这里读到有一个很好的词形还原器可以返回真实的单词——这正是我所需要的。我下载了建议的词形还原器“Morpha”,但我不明白如何使用它。

  • 是否需要任何编译?
  • 我应该使用哪个文件?
  • 如何在访问 WordNet SQL DB 的应用程序中使用它?
4

4 回答 4

1

UW 已将morpha stemmer 上传到 Maven central。有一个包装器使它更易于使用。您只需将其添加为依赖项并使用edu.washington.cs.knowitall.morpha.MorphaStemmer该类。实例是线程安全的(原来的 JFlex 有不必要的局部变量的类字段)。实例化一个类并运行morpha你想要阻止的单词。

new MorphaStemmer().morpha("climbed") // goes to "climb"
于 2012-05-23T17:47:51.387 回答
0

您可能还想查看 TTT2,这是一个 NLP 管道,可以单独或单独进行标记、词形还原等。易于使用且有据可查: http ://www.ltg.ed.ac.uk/software/lt-ttt2

于 2009-08-22T11:07:19.947 回答
0

Minnen et al's paper on Morpha might be a good place to start to understand how the lemmatizer works. It's been a while since I'd had any experience with it myself, but I'm pretty sure it works just as an off-the-shelf binary.

Depending on performance, you may need to POS-tag your terms beforehand, but that's about the same issue you'll have querying WordNet, so it's starting to sound like you'll need to climb that hill either way.

You would basically use the root form when querying the Wordnet DB, but if you're using it just for that, I'd urge you to try the Morphy stemmer, which was specifically designed for Wordnet, and will reliably match to the root forms listed therein.

于 2009-07-27T14:34:56.260 回答
0

您现在一定已经找到了答案,但对于任何可能偶然发现这篇关于 Morpha 的帖子的人来说:

您可以直接从以下网址下载 Morpha:http: //www.informatics.susx.ac.uk/research/groups/nlp/carroll/morph.html

但这需要先安装 flex,解压并编译(我使用的是下面的 Linux 终端命令行):

tar -xzf flex-for-morph.tar.gz

然后将当前工作目录更改为 flex 并使其:

./configure
make

如果 make 命令给出以下错误:

制作:yacc:找不到命令 Makefile:105:目标“parse.c”的配方失败制作:*** [parse.c] 错误 127

这意味着它无法获取yacc;所以你需要通过命令行安装野牛:

sudo apt-get install bison

现在再次运行 make 命令,它应该在最后一行给你类似的东西:

gcc -g -O -o flex  ccl.o dfa.o ecs.o gen.o main.o misc.o nfa.o parse.o scan.o skel.o sym.o tblcmp.o yylex.o  libfl.a 

现在你可以编译 Morpha(你从上面的链接下载的):

../flex-2.5.4/flex -i -Cfe -8 -omorpha.yy.c morpha.lex
gcc -o morpha morpha.yy.c

Morpha 将已经带有 POS 标记的文件作为输入。要对单个文件进行 lemmatise,请使用:

./morpha -t  < ~/path to your file/yourfile.tag

上面的 -t 选项还打印 POS 标签以及词形还原形式;使用区分大小写的选项使用 -c 和两个选项一起使用 -ct

希望能帮助到你!

于 2019-01-22T11:36:23.893 回答