Отдельные списки слов для существительных, глаголов, прилагательных и т. Д. - PullRequest
26 голосов
/ 18 февраля 2010

Обычно списки слов представляют собой 1 файл, который содержит все, но есть ли отдельно загружаемый список существительных, список глаголов, список прилагательных и т. Д.?

Мне нужны именно они для английского языка.

Ответы [ 5 ]

33 голосов
/ 11 декабря 2014

Если вы загружаете только файлы базы данных из 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
31 голосов
/ 15 августа 2012

Это высокий рейтинг Google, поэтому я собираю этот двухлетний вопрос, чтобы дать гораздо лучший ответ, чем существующий.

На странице "Списки слов Кевина" представлены старые списки от2000 год, основанный на WordNet 1.6.

Вам гораздо лучше перейти на https://wordnet.princeton.edu/download/current-version и загрузить WordNet 3.0 (версия только для базы данных) или любую последнюю версию, когда вы читаетеthis.

Разбор очень прост;просто примените регулярное выражение "/^(\S+?)[\s%]/", чтобы захватить каждое слово, а затем замените все "_" (подчеркивание) в результатах пробелами.Наконец, сохраните результаты в любой формат хранения, который вы хотите.Вам будут даны отдельные списки прилагательных, наречий, существительных, глаголов и даже специальный (очень бесполезный / полезный в зависимости от того, что вы делаете) список, называемый «чувствами», который относится к нашим обоняниям, зрению, слуху и т. Д.То есть такие слова, как «рубашка» или «острый».

Наслаждайтесь!Не забудьте включить их уведомление об авторских правах, если вы используете его в проекте.

11 голосов
/ 06 декабря 2016

Как и предполагали другие, файлы базы данных WordNet являются отличным источником для частей речи. Тем не менее, примеры, используемые для извлечения слов, не совсем верны. Каждая строка на самом деле представляет собой «набор синонимов», состоящий из нескольких синонимов и их определения. Около 30% слов отображаются только как синонимы, поэтому при простом извлечении первого слова не хватает большого количества данных.

Формат строки довольно прост для анализа (search.c, функция parse_synset), но если все, что вас интересует, это слова, соответствующая часть строки отформатируется как:

NNNNNNNN NN a NN word N [word N ...]

Они соответствуют:

  • Смещение байта в файле (8-значное целое число)
  • Номер файла (целое число из 2 символов)
  • Часть речи (1 символ)
  • Количество слов (2 символа в шестнадцатеричном коде)
  • N случаев ...
    • Слово с пробелами, замененными подчеркиванием, необязательный комментарий в скобках
    • Слово лексический идентификатор (уникальный идентификатор вхождения)

Например, от data.adj:

00004614 00 s 02 cut 0 shortened 0 001 & 00004412 a 0000 | with parts removed; "the drastically cut film"
  • Смещение байта в файле 4614
  • Номер файла 0
  • Часть речи s, соответствующая прилагательному (wnutil.c, функция getpos)
  • Количество слов 2
    • Первое слово cut с лексическим идентификатором 0
    • Второе слово shortened с лексическим идентификатором 0

Короткий 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
    }
}

Суть вышеприведенного скрипта можно найти здесь .
Более надежный парсер, который остается верным исходному источнику, можно найти здесь .

Оба сценария используются одинаково: ./wordnet_parser.pl DATA_FILE.

8 голосов
/ 18 февраля 2010

См. Списки слов Кевина . В частности, «Часть речи базы данных». Вам нужно будет выполнить некоторую минимальную обработку текста самостоятельно, чтобы вы могли самостоятельно создать базу данных в несколько файлов, но это можно сделать очень легко с помощью нескольких команд grep.

Условия лицензии доступны на странице readme.

5 голосов
/ 19 сентября 2015

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...