Dictionary 名词、动词、形容词等的单独词表
通常单词列表是一个包含所有内容的文件,但是否有可单独下载的名词列表、动词列表、形容词列表等 我特别需要英文版。请参阅。特别是“词性数据库”。您必须自己进行一些最小的文本处理,以便自己将数据库放入多个文件中,但这可以通过几个Dictionary 名词、动词、形容词等的单独词表,dictionary,grammar,spell-checking,Dictionary,Grammar,Spell Checking,通常单词列表是一个包含所有内容的文件,但是否有可单独下载的名词列表、动词列表、形容词列表等 我特别需要英文版。请参阅。特别是“词性数据库”。您必须自己进行一些最小的文本处理,以便自己将数据库放入多个文件中,但这可以通过几个grep命令轻松完成 许可条款可以在“自述”页面上找到。这是一个排名很高的谷歌结果,因此我正在挖掘这个2年前的问题,以提供比现有问题更好的答案 “Kevin的单词列表”页面提供了2000年的旧列表,基于WordNet 1.6 阅读本文时,最好去下载WordNet 3.0(仅数据
grep
命令轻松完成
许可条款可以在“自述”页面上找到。这是一个排名很高的谷歌结果,因此我正在挖掘这个2年前的问题,以提供比现有问题更好的答案 “Kevin的单词列表”页面提供了2000年的旧列表,基于WordNet 1.6 阅读本文时,最好去下载WordNet 3.0(仅数据库版本)或任何最新版本 解析它非常简单;只需应用一个正则表达式
“/^(\S+?)[\S%]/”
来抓取每个单词,然后用空格替换结果中的所有“\u”
(下划线)。最后,将结果转储到所需的任何存储格式。你会得到一个单独的形容词、副词、名词、动词列表,甚至是一个特殊的(非常无用/有用,取决于你在做什么)列表,称为“感官”,它与我们的嗅觉、视觉、听觉等有关,例如“衬衫”或“辛辣”
享受吧!如果您在项目中使用,请记住包含他们的版权声明。如果您仅从中下载数据库文件,则可以通过运行以下命令来提取文字:
egrep -o "^[0-9]{8}\s[0-9]{2}\s[a-z]\s[0-9]{2}\s[a-zA-Z_]*\s" data.adj | cut -d ' ' -f 5 > conv.data.adj
egrep -o "^[0-9]{8}\s[0-9]{2}\s[a-z]\s[0-9]{2}\s[a-zA-Z_]*\s" data.adv | cut -d ' ' -f 5 > conv.data.adv
egrep -o "^[0-9]{8}\s[0-9]{2}\s[a-z]\s[0-9]{2}\s[a-zA-Z_]*\s" data.noun | cut -d ' ' -f 5 > conv.data.noun
egrep -o "^[0-9]{8}\s[0-9]{2}\s[a-z]\s[0-9]{2}\s[a-zA-Z_]*\s" data.verb | cut -d ' ' -f 5 > conv.data.verb
或者如果您只需要单个单词(无下划线)
每个词性词汇表条目包括一个单词或短语字段,后跟一个字段分隔符(ASCII 215),以及使用以下ASCII符号编码的词性字段(大小写重要):
正如其他人所建议的那样,词汇是词类的重要来源。也就是说,用于提取单词的示例并不完全正确。每一行实际上是一个“同义词集”,由多个同义词及其定义组成。大约30%的单词只作为同义词出现,因此简单地提取第一个单词会丢失大量数据 行格式的解析非常简单(
search.c
,functionparse\u synset
),但是如果您只对单词感兴趣,那么行的相关部分的格式为:
NNNNNNNN NN a NN word N [word N ...]
这些对应于:
- 文件中的字节偏移量(8个字符的整数)
- 文件号(2个字符的整数)
- 词性(1字)
- 字数(2个字符,十六进制编码)
- N出现。。。
- 用下划线替换空格的单词,括号中的可选注释
- 单词词法ID(唯一的出现ID)
data.adj
:
00004614 00 s 02 cut 0 shortened 0 001 & 00004412 a 0000 | with parts removed; "the drastically cut film"
- 文件中的字节偏移量为4614
- 文件号为0
- 词性是
,对应于形容词(s
,functionwnutil.c
)getpos
- 字数是2
- 第一个单词是
,词法ID为0cut
- 第二个单词是
,词法ID为0缩短的
- 第一个单词是
一个简短的Perl脚本,用于从
数据中转储单词。*
文件:
#!/usr/bin/perl
while (my $line = <>) {
# If no 8-digit byte offset is present, skip this line
if ( $line !~ /^[0-9]{8}\s/ ) { next; }
chomp($line);
my @tokens = split(/ /, $line);
shift(@tokens); # Byte offset
shift(@tokens); # File number
shift(@tokens); # Part of speech
my $word_count = hex(shift(@tokens));
foreach ( 1 .. $word_count ) {
my $word = shift(@tokens);
$word =~ tr/_/ /;
$word =~ s/\(.*\)//;
print $word, "\n";
shift(@tokens); # Lexical ID
}
}
#/usr/bin/perl
while(我的$line=){
#如果不存在8位字节偏移量,则跳过此行
如果($line!~/^[0-9]{8}\s/){next;}
chomp($line);
my@tokens=拆分(/,$line);
移位(@tokens)#字节偏移量
shift(@tokens);#文件号
移位(@tokens)#词性
我的$word_count=hex(移位(@tokens));
foreach(1..$word\u计数){
我的$word=shift(@tokens);
$word=~tr/u/;
$word=~s/\(.*)/;
打印$word,“\n”;
移位(@tokens)#词法ID
}
}
可以找到上述脚本的要点。可以找到一个更健壮的解析器,它与原始源代码保持一致
这两个脚本的使用方式相似:
/wordnet\u parser.pl DATA\u FILE
您使用哪些文件?请注意,wordnet 3.0不包含变位符,例如,如果您在动词列表中搜索单词“are”,它将一无所获。当然“be”在那里,所以动词在那里,只是没有变位。链接已经死了。这似乎并没有给4年前说过的话增添多少。你自己说吧,这正是我需要的。谢天谢地!链接断了,认为应该是:你是真正的MVP!不确定windows中剪切的cmd,所以在记事本++搜索中执行了:^[^a-z]*?[a-z][^a-z]*?([a-zA-z]+)。?$Replace:\1非常感谢您为这个旧问题添加了这个有用的答案。你确实让我的生活轻松多了。如果可以的话,我会再投票99次。
00004614 00 s 02 cut 0 shortened 0 001 & 00004412 a 0000 | with parts removed; "the drastically cut film"
#!/usr/bin/perl
while (my $line = <>) {
# If no 8-digit byte offset is present, skip this line
if ( $line !~ /^[0-9]{8}\s/ ) { next; }
chomp($line);
my @tokens = split(/ /, $line);
shift(@tokens); # Byte offset
shift(@tokens); # File number
shift(@tokens); # Part of speech
my $word_count = hex(shift(@tokens));
foreach ( 1 .. $word_count ) {
my $word = shift(@tokens);
$word =~ tr/_/ /;
$word =~ s/\(.*\)//;
print $word, "\n";
shift(@tokens); # Lexical ID
}
}