Обычно списки слов - это 1 файл, который содержит все, но есть ли отдельно загружаемый список существительных, список глаголов, список прилагательных и т.д.
Мне нужны они специально для английского.
Обычно списки слов - это 1 файл, который содержит все, но есть ли отдельно загружаемый список существительных, список глаголов, список прилагательных и т.д.
Мне нужны они специально для английского.
Смотрите списки слов Кевина. В частности, "Часть речевой базы данных". Вам нужно будет сделать небольшую текстовую обработку самостоятельно, чтобы получить базу данных в несколько файлов для себя, но это можно сделать очень легко с помощью нескольких команд grep
.
Условия лицензии доступны на странице "readme".
Это результат высокого рейтинга Google, поэтому я выкапываю этот двухлетний вопрос, чтобы дать гораздо лучший ответ, чем существующий.
Страница "Списки слов Кевина" содержит старые списки с 2000 года на основе WordNet 1.6.
Вам гораздо лучше перейти на http://wordnet.princeton.edu/wordnet/download/current-version/ и загрузить WordNet 3.0 (только для базы данных) или любую другую последнюю версию, когда вы читаете это.
Разбор очень простой; просто примените регулярное выражение "/^(\S+?)[\s%]/"
, чтобы захватить каждое слово, а затем замените все "_"
(подчеркивания) в результатах пробелами. Наконец, дамп ваши результаты в любой формат хранения, который вы хотите. Вам будут предоставлены отдельные списки прилагательных, наречий, существительных, глаголов и даже специальный (очень бесполезный/полезный в зависимости от того, что вы делаете) список, называемый "чувства", который относится к нашим чувствам обоняния, зрения, слуха и т.д., т.е. такие слова, как "рубашка" или "острая".
Наслаждайтесь! Не забудьте включить их уведомление об авторских правах, если вы используете его в проекте.
Если вы загружаете только файлы базы данных из http://wordnet.princeton.edu/wordnet/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
Как и другие, файлы базы данных WordNet являются отличным источником для частей речи. Тем не менее, примеры, используемые для извлечения слов, не совсем корректны. Каждая строка на самом деле представляет собой "набор синонимов", состоящий из нескольких синонимов и их определения. Около 30% слов появляются только как синонимы, поэтому простое извлечение первого слова пропускает большой объем данных.
Формат строки довольно прост для синтаксического анализа (search.c
, function 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
, function getpos
)cut
с лексическим идентификатором 0shortened
с лексическим идентификатором 0Короткий Perl script, чтобы просто выгрузить слова из файлов 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
}
}
Сущность приведенного выше script может быть найдена здесь.
Более надежный парсер, который остается верным исходному источнику, можно найти здесь.
Оба сценария используются аналогичным образом: ./wordnet_parser.pl DATA_FILE
.
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