Обращаюсь за советом по оптимальному решению нечетного требования. Я учусь (литературовед) на четвертом курсе колледжа, у меня есть только собственные инструкции по программированию. Я достаточно компетентен в Python, поэтому у меня не будет проблем с реализацией решений, которые я нахожу (большую часть времени), и разработкой на их основе, но из-за моей новизны я ищу совета по лучшим способам Я мог бы заняться этой своеобразной проблемой.
Уже используется NLTK, но отличается от примеров в книге NLTK. Я уже использую много вещей из NLTK, в частности WordNet, так что этот материал мне не чужд. Я прочитал большую часть книги NLTK. Я бы лучше знал, что делать, если бы я пытался анализировать существующие тексты или если бы целевые тексты были похожи на прозу, но мое приложение ориентировано на поэзию, особенно на создание поэтических текстов на лету, на основе непредвиденных входных данных. от пользователей.
Я работаю с фрагментарным, атомарным языком. Мое приложение перемещается пословно: каждый раунд несколько пользователей вставляют слова (по одному слову на пользователя). Моя программа стремится объединить или объединить эти входные слова для создания одного выходного слова.Я уже разработал алгоритм выбора слов - он использует различные функции WordNet, чтобы получить результат, состоящий из одного слова. Результатом является синсет WordNet - слово без изменения (без множественности и времени). Результат добавляется к тексту «стихотворения» (после некоторого пробела). Добавление полученного слова влияет на выбор пользователем того, какое слово бросить в горшок следующим, и именно так движется эта игра / программа, добавляя к стихотворению по одному машинно-преобразованному слову за раз.
Проблема: как изменить результат грамматически разумным способом? Без какой-либо грамматической обработки результаты представляют собой просто список слов, доступных для поиска, без согласования слов. Первым шагом для моего приложения является определение корня / множественного числа / сопряжения / перегиба корневых слов в соответствии с контекстом. («Корневые слова», о которых я говорю, - это синсеты из WordNet и / или их удобочитаемые эквиваленты.) Представив, что в стихотворении уже есть какой-то грамматически понятный текст, мое приложение должно изменить новый результат -слово согласиться с существующей последовательностью. Это нормально, если это работает только как окно из трех слов или что-то в этом роде, но я ищу совета по оптимальному порядку операций. Я надеюсь, что кто-нибудь может дать мне несколько указателей (я полагаю, что это будет сложно реализовать, но я хочу убедиться, что начинаю с правильных идей).
Предположим, у нас уже есть отрывок стихотворения, к которому пользователи добавляют новые данные.Новые результаты нужно подгонять грамматически разумным образом.
The river bears no empty bottles, sandwich papers,
Silk handkerchiefs, cardboard boxes, cigarette ends
Or other testimony of summer nights. The nymphs
Допустим, мой алгоритм принял пакет входных данных от пользователей, и теперь ему нужно вывести 1 из 4 возможных следующих слов / синсетов (неофициально представленных): ['отъезд', 'иметь', 'синий ',' быстро ']
. Мне кажется, что «синий»
следует отбросить; «Голубые нимфы»
кажется грамматически странным / маловероятным. Оттуда он мог использовать любой из этих глаголов.
Если он выберет «иметь»
, результат может быть существенно изменен, так как «имел»
, «иметь»
, «иметь»
, «будет иметь»
, »будет иметь»
и т. Д. (Но не «имеет»
). (В результате получится что-то вроде «У нимф есть»
, и результат с разумной изменчивостью обеспечит лучший контекст для будущих результатов ...)
Я бы хотел «депурация»
быть допустимой возможностью в этом случае; в то время как «Уход нимф»
не имеет смысла (это не «нимфы»
), «Нимфы ушли»
(или другой глагол спряжения) будет.
Казалось бы «Нимфы быстрые»
не имели бы смысла, но что-то вроде «Нимфы быстро [...]»
или «Нимфы оживляются»
мог бы, поэтому 'quick'
также является возможностью для разумного перегиба.
«имеющий»
, а не какое-либо другое время). Я слышал, что Stanford POS tagger хорош, и он реализован на NLTK.Я не уверен, как здесь справиться с обнаружением напряженности. «нимфы»
нам не нужен ни артикль (или определитель, насколько я могу судить), ни прилагательное, но наречие или глагол могут работать. Сравнение текущего материала с последовательностями в помеченных корпусах (и / или цепями Маркова?) - или консультация по функциям проверки грамматики - может предоставить решение для этого. Мне нужен совет относительно правильности этой процедуры, а также предложения по добавлению шагов. Также были бы полезны способы разбить эти шаги дальше. Наконец, я ищу предложения о том, какой инструмент может лучше всего выполнить каждую задачу.
Я старался быть как можно более кратким, но при этом предоставлял достаточно информации.Пожалуйста, не стесняйтесь обращаться ко мне за разъяснениями! Я буду признателен за любую полученную информацию и приму самый ясный / самый информативный ответ :) Спасибо!