Обнаруживать собственные существительные с помощью WordNet?

Я использую JAWS для доступа к WordNet. Дано слово, есть ли способ определить, является ли это правильным существительным? Похоже, что синтезы имеют довольно грубые лексические категории.

Чтобы уточнить, нет контекста для слов - они представлены только индивидуально. Если слово может быть предположительно использовано в качестве общего существительного, оно приемлемо. Таким образом, "отметка" прекрасна, потому что, хотя это может быть кто-то, она также может ссылаться на точку. Однако "Африка" не является.

Ответ 1

К сожалению, вы не сможете надежно определить правильную информацию об именах из синтаксисов WordNet. То, что вы ищете, Именованное распознавание сущностей. Есть ссылки на несколько версий, доступных в Java на странице wikipedia. Я лично рекомендовал Stanford NER или LingPipe.

Обновлено:

На основе добавленного ограничения без контекста для слов вы можете использовать капитализацию в качестве основного индикатора, а затем дважды проверить WordNet, чтобы узнать, может ли слово использоваться как существительное. Возможно, что-то вроде этого:

String word = "foo";
boolean isProperNoun = false;
if (Character.isUpperCase(word.charAt(0))) {
    WordNetDatabase database = WordNetDatabase.getFileInstance();
    Synset[] synsets = database.getSynsets(word, SynsetType.NOUN);
    isProperNoun = synsets.length > 0;
}

Это устранит ложные срабатывания, подобные этому:

Если вы его создаете...
Как, вы хотите...
Ох Ромео, Ромео...

И все еще ловить только капитализированные существительные в

В книге Отметить сказано... Вы слышали недавно Корни или Кто?

но все же вы получите ложные срабатывания на

Отметьте первый экземпляр...
Забронировать, Данно.

потому что они могут быть, но без контекста вы не знаете.

Если вы хотите стать очень хитрым, вы можете следить за гипернимным деревом на любом существительном, чтобы увидеть, достигли ли вы чего-то очевидного, как "компания" или "страна". Однако в последний раз, когда я работал с WordNet (4 года назад), отношения гиперним/гипоним не были очень надежными или последовательными, что могло вызвать множество ложных негативов (и без улучшения ложных срабатываний, о которых я упоминал выше, потому что они полностью зависит от контекста).

Ответ 2

Позвольте мне провести это мимо вас. Возможно, вам придется проделать еще несколько книг на английском языке, чтобы получить представление о том, что невозможно определить часть слова из контекста.

Лучшее, что вы можете сделать, это тест на исключение... определение того, что WordNet не знает использования в данной части речи. В некоторых случаях вы можете обнаружить, что только одна часть речи указана в WordNet. Например, я не знаю, как использовать "автомобиль", кроме как существительное.

Отличие собственных существительных от общих - еще сложнее. Конечно, вы можете использовать эвристику... существительное, которое не является исходным словом предложения и заглавное, но не в ALLCAPS, вероятно, является правильным существительным.

В конечном счете, различие является скорее семантикой, чем лексическим анализом. Я сомневаюсь, что вы найдете достаточно надежное решение, основанное на поиске слов в WordNet. Я думаю, вам нужно будет сделать грамматический анализ естественного языка, прежде чем вы сможете надежно извлекать существительные, а тем более обнаруживать собственные существительные в прозе.

Ответ 3

Если вы используете командную строку linux для использования Wordnet, вы можете использовать 'wn -synsn' для получения всех синтезов слова. Собственные существительные будут капитализированы. Например.

$: wn mark -synsn

   Synonyms/Hypernyms (Ordered by Estimated Frequency) of noun mark
   15 senses of mark                                                       

   Sense 1
   mark, grade, score
         => evaluation, valuation, rating
   .
   .
   .
   Sense 8
   Mark, Saint Mark, St. Mark
         INSTANCE OF=> Apostle, Apostelic Father
         INSTANCE OF=> Evangelist
         INSTANCE OF=> saint

Но, серьезно, пожалуйста, не полагайтесь только на Wordnet для этого. Существуют потенциальные gazillions собственных существительных, для которых Wordnet не будет получать вам какую-либо информацию. Попробуйте, например, название Henrik!

Однако вы можете создать контекст для своего слова w из наборов данных, таких как Google n-gram corpus, и использовать такие контексты для создания классификатора, который возвращает доверительный балл (т.е. классификатор может сказать, что w является собственным существительным с 0 <= c <= 1 доверие.)

Ответ 4

Эта информация, похоже, специально не хранится в WordNet. Тем не менее, вы можете взглянуть на первую словосочетание существительного sysnet, чтобы узнать, заглавная ли она. Не уверен, что официальный, но, похоже, работает, говоря, что муха не является надлежащим существительным, а Франция.