Генерировать случайное предложение из грамматики или Ngrams?

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

Кажется, есть несколько подходов:

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

Я правильно об этом думаю? Является ли один подход предпочтительнее другого? Любые советы приветствуются. Спасибо!


person skaz    schedule 16.06.2015    source источник
comment
см. icml-2011.org/papers/524_icmlpaper.pdf и fit.vutbr.cz/~imikolov/rnnlm   -  person alvas    schedule 16.06.2015


Ответы (2)


Если я правильно понимаю и если цель состоит в том, чтобы проверить себя на уже изученном словарном запасе, то можно использовать другой подход:

Вместо того, чтобы выполнять сложную работу NLG (Natural Language Generation), вы можете создать поисковую программу, которая выходит в интернет, читает новостные ленты или даже просто Википедию и находит предложения, содержащие только те слова, которые вы определили.

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

У этого было бы большое преимущество проверки себя на реальных предложениях, в отличие от искусственно сконструированных (которые, вероятно, будут звучать не совсем правильно в ряде случаев).

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

person Karpov    schedule 16.06.2015
comment
Я также хочу проверить себя на структурах грамматики. Язык (в данном случае мандарин) вызывает особую проблему, потому что слова обычно романтизируются в пиньинь, чтобы их было легче понять. Сканировать веб-страницы будет сложно, так как настоящие китайские тексты написаны китайскими иероглифами. Я также сомневаюсь, что смогу легко найти предложения с очень простой структурой, которую я мог бы сказать, хотя, возможно, это возможно. Спасибо за советы! - person skaz; 16.06.2015
comment
Как вы говорите, начиная с транслитерации пиньинь, это было бы невозможно, поскольку так много китайских иероглифов могут соответствовать одному слогу пиньинь с заданным акцентом. Однако поиск предложений с заданными китайскими иероглифами на самом деле может быть проще, чем с другими языками, поскольку в китайском языке нет ни множественного числа, ни спряжения глаголов. Если вы изучаете мандарин, перед вами стоит множество задач, но грамматика не входит в их число :) - person Karpov; 16.06.2015
comment
Еще раз спасибо за Ваш ответ. Тот факт, что грамматика в мандаринском языке проста, является причиной того, что я хотел создать эту программу. Я не должен был говорить, что хочу практиковаться в грамматике — чего я действительно хочу, так это повторной разговорной практики со всеми существующими грамматическими структурами, поэтому я использую их правильно. В немецком я замечаю, что прибегаю к проверенным фразам и грамматическим конструкциям, не используя полный язык. Я думаю, что мог бы улучшить другие языки, которые я изучаю, заставляя себя произносить больше предложений, например: [Тема] [Время1] [Время2] [Место] [Глагол] [Чу] [Глагол] [Объект]. - person skaz; 17.06.2015
comment
(не хватило места) вместо того, чтобы полагаться на себя, чтобы придумать структуру, которая обычно заканчивается чем-то вроде английского, где я бы не выбрал форму глагола яо бу яо, а сказал бы [Тема] [глагол ] [Объект], если это имеет смысл. - person skaz; 17.06.2015

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

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

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

person alexis    schedule 18.06.2015