Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Непростое решение, обработка естественного языка является намного более широким полем, чем большинство людей думает, что это. В основном язык может быть разделен на несколько категорий, которые потребуют, чтобы Вы изучили полностью разные вещи.
, Прежде чем я запущу, позвольте мне сказать Вам, что я сомневаюсь, что Вы будете иметь любой известный успех (как профессионал, по крайней мере), не имея градуса в некотором (тесно связанном) поле. Существует много включенной теории, большая часть из нее является сухим материалом и трудно учиться. Вам будет нужна большая износостойкость и больше всего: время.
, Если Вы интересуетесь значением текста, ну, в общем, это - Следующая Большая Вещь. Семантические поисковые системы предсказаны как сеть инициирования 3.0, но мы далеки от 'там' все же. Извлечение логики из текста является иждивенцем на нескольких шагах:
А маленький список, первое, что пришло на ум. Существует больше:-), и намного больше деталей к каждой точке. Например, когда я говорю "парсинг", что это? Существуют многие различные алгоритмы парсинга, и существует так же, как много формализма парсинга. Среди самого мощного Грамматика соединения деревьев и Вершинная грамматика составляющих . Но они оба едва используются в поле (на данный момент). Обычно, Вы будете иметь дело с некоторым непродуманным порождающим подходом и должны будете провести морфологический анализ сами.
Движение оттуда к семантике является большим шагом. Интерфейс Syntax/Semantics является иждивенцем оба на синтаксическом и семантическая платформа, используемая, и еще нет никакого единственного рабочего решения. На семантической стороне существует классическая генеративная семантика, тогда существует Теория , Представления Дискурса динамическая семантика и многое другое. Даже логический формализм, на основе которого все, все еще не четко определен. Некоторые говорят, что нужно использовать логику первого порядка, но это едва кажется достаточным; тогда существует интенсиональная логика, как используется Montague, но это кажется чрезмерно сложным, и в вычислительном отношении невыполнимым. Также существует динамическая логика (Groenendijk, и Stokhof вели этот материал. Большой материал!) и совсем недавно, этим летом на самом деле, Jeroen Groenendijk представил новый формализм, Любознательный Семантика , также очень интересный.
, Если Вы хотите начать на очень простом уровне, читайте Блэкберн и Bos (2005) , это - большой материал и фактическое введение в Вычислительную семантику! Я недавно расширил их систему для покрытия теории раздела вопросов (ответ вопроса является зверем!), как предложено Groenendijk и Stokhof (1982), но к сожалению, теория имеет сложность O (nВІ) по домену людей. При выполнении так, я нашел B& реализация B, чтобы быть немного, erhm†¦ hackish, в местах. Однако, это идет в действительно, действительно помогите Вам погрузиться в вычислительную семантику, и это - все еще очень впечатляющая витрина того, что может быть сделано. Кроме того, они заслуживают дополнительных прохладных точек для реализации грамматики, которая улажена в Криминальном чтиве (фильм).
И в то время как я в нем, Пролог погрузки. Большое исследование в вычислительной семантике основано на Прологе. Изучают Пролог Теперь! хорошее введение. Я могу также рекомендовать "Искусство Пролога" и "Пролога Ковингтона, Программирующего подробно" и "Обработки естественного языка для Программистов Пролога", бывшие из которых доступны бесплатно онлайн.
Chomsky является полностью неправильным источником для смотрения для обработки естественного языка (и он сказал бы так же сам, решительно) - см.: " Статистические методы и Лингвистика " Abney.
Jurafsky и Martin, упомянутый выше, являются стандартной ссылкой, но я сам предпочитаю Manning и SchГјtze. Если Вы будете серьезно относиться к обработке естественного языка, то Вы, вероятно, захотите считать обоих. Существуют видео одного из курсов Manning, доступных онлайн .
Если Вы проходите через Пролог, пока глава DCG в Не Изучает Пролог Теперь! упомянутый г-ном Dimitrov выше, у Вас будет хорошее начало при получении некоторой семантики в Вашу систему, так как Пролог дает Вам очень простой способ поддержать базу данных знаний и убеждений, которые могут быть обновлены посредством ответа вопроса.
Что касается литературы, у меня есть одна главная рекомендация для Вас: выбегите и купите Обработка речи и Обработка языка Jurafsky & Martin. Это в значительной степени эти книга по обработке естественного языка (первая глава доступна онлайн); используемый в frillion университете курсы, но также и очень читаемый для нелингвиста и практически ориентированный, одновременно идя довольно глубоко в проблемы лингвистики. Я действительно не могу рекомендовать это достаточно. Главы 17, 18 и 21, кажется, то, что Вы ищете (14, 15 и 18 в первом выпуске); они показывают Вам простую нотацию лямбды, которая переводит вполне прилично в DCG's Пролога с функциями.
, О, btw, при получении ведущих устройств в лингвистике; если семантика NL - то, во что Вы, я рекомендовал бы брать все связанные с AI курсы, которые можно найти (хотя любые курсы "простой" лингвистической семантики, логики, логической семантики, DRT, LFG/HPSG/CCG, парсинг NL, формальная лингвистическая теория, и т.д. не причинил бы боль...)
Чтение, исходная литература Chomsky не действительно полезна; насколько я знаю, что нет никаких текущих реализаций, которые непосредственно соответствуют его теориям, весь полезный материал его в значительной степени включен в категорию другими теориями (и любой, кто остается около лингвистов для любого вопроса времени, поглотит знание Chomsky осмосом).
Вы могли попытаться читать немного на , фраза структурировала grammers, который является в основном математикой позади большого количества языка processessing. Это на самом деле не настолько тяжело, будучи основан в основном на теории множеств и теории графов. Я изучил его много лун назад как часть дискретного математического курса, и я предполагаю, что существует много хороших ссылок, доступных на данном этапе.
Edit:Not так, как я ожидал на Google, хотя этот похож на хороший источник изучения.
Одним из ранних проводников в обработку естественного языка является Noam Chomsky; он записал маленькие книги по предмету в 50-х в течение 70-х. Можно найти то чтение привлечения.
Cycorp имеют краткое описание из как их база знаний Cyc получает значение из предложений.
Путем использования значительной базы знаний общих фактов, система может определить самый логический синтаксический анализ предложения.
Более простое место для начала со стандартных блоков является взглядом на документацию для пакета, который пытается сделать это. Я рекомендовал бы Python [Инструментарий естественного языка (NLTK) 1 , особенно из-за их правильно написанная, бесплатная книга , который заполнен примерами. Это не получит Вас полностью к тому, что Вы хотите (который является тяжелой проблемой AI), но это даст Вам хорошую опору. NLTK имеет синтаксические анализаторы, фрагментаторы, контекстно-свободные грамматики, и т.д.
Очень приятное читаемое введение является Инстинктом Языка Steven Pinker. Это входит в материал Chomsky и также рассказывает интересные истории от эволюционного угла биологии. Могло бы стоить запустить с чего-то как этот прежде, чем погрузиться в бумаги Chomsky и связал работу, если Вы плохо знакомы с предметом.
Это действительно сложные вещи. Я начался бы путем получения, по крайней мере, Masters в Лингвистике, и затем работал бы для своего доктора философии в информатике, концентрирующейся на обработке естественного языка.
проблема состоит в том, что у большинства из нас нет понимания того, каков язык. И без того понимания, чертовски трудно реализовать решение.
Другие комментарии дают некоторые чтения, которые прекрасны, вероятно, если Вы хотите начать играть вокруг с маленьким подмножеством проблемы, но для предложения действительно надежного решения, тогда нет никаких ярлыков. Вам нужен уровень образовательной подготовки в обеих дисциплинах.
Я настоятельно рекомендовал бы проигрывание вокруг с NLTK и чтением Книги NLTK. NLTK очень мощен и легок войти.