通常单词列表是包含所有内容的1个文件,但是可以单独下载名词列表,动词列表,形容词列表等吗?
我特意需要英语。
答案 0 :(得分:33)
如果只从wordnet.princeton.edu/download/current-version下载数据库文件,则可以通过运行以下命令来提取单词:
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
或者,如果您只想要单个单词(没有下划线)
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
答案 1 :(得分:31)
这是一个排名很高的Google搜索结果,因此我正在挖掘这个2年前的问题,以提供比现有问题更好的答案。
“Kevin的单词列表”页面提供了基于WordNet 1.6的2000年的旧列表。
最好不要去https://wordnet.princeton.edu/download/current-version并下载WordNet 3.0(仅限数据库版本)或者阅读本文时的最新版本。
解析它非常简单;只需应用"/^(\S+?)[\s%]/"
的正则表达式来抓取每个单词,然后用空格替换结果中的所有"_"
(下划线)。最后,将结果转储到您想要的任何存储格式。您将获得单独的形容词,副词,名词,动词列表,甚至是一个特殊的(非常无用/有用取决于您正在做的事情)列表,称为“感官”,与我们的嗅觉,视觉,听觉等感官有关。 ,即“衬衫”或“刺鼻”等词语。
享受!如果您在项目中使用它,请记得包含他们的版权声明。
答案 2 :(得分:11)
正如其他人所说,WordNet database files是词性的重要来源。也就是说,用于提取单词的示例并不完全正确。每一行实际上都是一个“同义词集”,由多个同义词及其定义组成。大约30%的单词仅作为同义词出现,因此简单地提取第一个单词会丢失大量数据。
行格式很容易解析(search.c
,函数parse_synset
),但如果您感兴趣的只是单词,则该行的相关部分格式为:
NNNNNNNN NN a NN word N [word N ...]
这些对应于:
例如,来自data.adj
:
00004614 00 s 02 cut 0 shortened 0 001 & 00004412 a 0000 | with parts removed; "the drastically cut film"
s
,对应形容词(wnutil.c
,函数getpos
)cut
,词汇ID为shortened
,词汇ID为简短的Perl脚本,只需转储data.*
文件中的单词:
#!/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
}
}
可以找到上述脚本的要点here 可以找到一个更稳健的解析器,它可以保持原始源的真实性here。
两种脚本的使用方式类似:./wordnet_parser.pl DATA_FILE
。
答案 3 :(得分:8)
见Kevin's word lists。特别是“词性数据库”。您必须自己进行一些最小的文本处理,以便自己将数据库分成多个文件,但这可以通过一些grep
命令轻松完成。
许可条款可在“自述”页面上找到。
答案 4 :(得分:5)
http://icon.shef.ac.uk/Moby/mpos.html
每个词性词汇表条目包含一个单词或短语字段,后跟字段分隔符(ASCII 215)和使用以下ASCII符号编码的词性字段(大小写很重要):
Noun N
Plural p
Noun Phrase h
Verb (usu participle) V
Verb (transitive) t
Verb (intransitive) i
Adjective A
Adverb v
Conjunction C
Preposition P
Interjection !
Pronoun r
Definite Article D
Indefinite Article I
Nominative o