Алгоритмы для идентификации Маркова сгенерированное содержание?

Это может быть немного поздно, но вот метод, который я только что разработал для коллеги, чтобы добавить функцию .toCurrencyString() с учетом локали ко всем числам. Интернализация предназначена только для группировки чисел, а НЕ для знака валюты - если вы выводите доллары, используйте "$" в том виде, как он поставляется, потому что $123 4567 в Японии или Китае такое же количество долларов, как $1,234,567 здесь в США. , Если вы выводите евро / и т. Д., Измените знак валюты с "$".

Объявите об этом где-нибудь в вашей ГОЛОВКЕ или там, где это необходимо, непосредственно перед тем, как вам нужно будет это использовать:

  Number.prototype.toCurrencyString = function(prefix, suffix) {
    if (typeof prefix === 'undefined') { prefix = ' 

Тогда все готово! Используйте (number).toCurrencyString() везде, где вам нужно вывести число в качестве валюты.

var MyNumber = 123456789.125;
alert(MyNumber.toCurrencyString()); // alerts "$123,456,789.13"
MyNumber = -123.567;
alert(MyNumber.toCurrencyString()); // alerts "$-123.57"
; } if (typeof suffix === 'undefined') { suffix = ''; } var _localeBug = new RegExp((1).toLocaleString().replace(/^1/, '').replace(/\./, '\\.') + "$"); return prefix + (~~this).toLocaleString().replace(_localeBug, '') + (this % 1).toFixed(2).toLocaleString().replace(/^[+-]?0+/,'') + suffix; }

Тогда все готово! Используйте (number).toCurrencyString() везде, где вам нужно вывести число в качестве валюты.

var MyNumber = 123456789.125;
alert(MyNumber.toCurrencyString()); // alerts "$123,456,789.13"
MyNumber = -123.567;
alert(MyNumber.toCurrencyString()); // alerts "$-123.57"
11
задан crypdick 23 June 2015 в 23:56
поделиться

5 ответов

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

т.е. если язык был сгенерирован с помощью марковской модели 2-го порядка, до 3-грамм будут иметь правильные частоты, но 4 -граммы, вероятно, не будут.

Вы можете получить до 5-граммовых частот из общедоступного n-граммного набора данных Google. Это' Хотя он огромен - 24G сжатый - вам нужно получить его по почте на DVD с LDC .

РЕДАКТИРОВАТЬ: Добавлены некоторые детали реализации

N-граммы уже подсчитаны, поэтому вам просто нужно сохранить счетчики (или частоты) таким образом, чтобы их можно было быстро найти. Должна работать правильно проиндексированная база данных или, возможно, индекс Lucene.

Для данного фрагмента текста просканируйте его и найдите частоту каждого 5-грамма в своей базе данных и посмотрите, где он занимает место по сравнению с другими 5-граммами, которые начинаются с тех же 4 слов.

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

Добавлены некоторые детали реализации

n-граммы уже подсчитаны, поэтому вам просто нужно сохранить подсчеты (или частоты) таким образом, чтобы их можно было быстро найти. Должна работать правильно проиндексированная база данных или, возможно, индекс Lucene.

Для данного фрагмента текста просканируйте его и найдите частоту каждого 5-грамма в своей базе данных и посмотрите, где он занимает место по сравнению с другими 5-граммами, которые начинаются с тех же 4 слов.

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

Добавлены некоторые детали реализации

n-граммы уже подсчитаны, поэтому вам просто нужно сохранить подсчеты (или частоты) таким образом, чтобы их можно было быстро найти. Должна работать правильно проиндексированная база данных или, возможно, индекс Lucene.

Для данного фрагмента текста просканируйте его и найдите частоту каждого 5-грамма в своей базе данных и посмотрите, где он занимает место по сравнению с другими 5-граммами, которые начинаются с тех же 4 слов.

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

и посмотрите, где он занимает место по сравнению с другими 5-граммами, начинающимися с тех же 4 слов.

На практике более серьезным препятствием могут быть условия лицензирования набора данных. Использование его в коммерческих приложениях может быть запрещено.

и посмотрите, где он занимает место по сравнению с другими 5-граммами, которые начинаются с тех же 4 слов.

На практике более серьезным препятствием могут быть условия лицензирования набора данных. Использование его в коммерческих приложениях может быть запрещено.

6
ответ дан 3 December 2019 в 04:53
поделиться

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

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

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

В качестве примера приведем афоризм из kantmachine :

Сегодня, человеческая воля свободна; завтра, учитывая неразрывную цепочку природы, он смотрел на свободу как на просто иллюзия и объявляют природу all-in-all.

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

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

8
ответ дан 3 December 2019 в 04:53
поделиться

Я предлагаю обобщить ответ Эвана: создайте собственную марковскую модель и тренируйте ее с большим фрагментом (очень большого) образца, который вам дали, оставив остальную часть образца как «тестовые данные». Теперь посмотрите, насколько хорошо модель, которую вы обучили, справляется с тестовыми данными, например, с помощью теста хи-квадрат, который предложит ситуацию, в которой «соответствие слишком хорошее» (предполагая, что тестовые данные действительно генерируются этой моделью), а также те, в которых соответствие очень плохое (предполагая ошибку в структуре модели - чрезмерно обученная модель с неправильной структурой в таких случаях, как известно, плохо справляется).

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

Другой подход - использовать nltk для синтаксического анализа предложения, которые вы даете - небольшое количество ошибок следует ожидать даже в естественном тексте (поскольку люди несовершенны, как и синтаксический анализатор - он может не знать, что слово X может использоваться как глагол и только классифицируйте его как существительное и т. д. и т. д.), но большинство марковских моделей (если только они не моделируют по существу ту же грамматическую структуру, которую использует ваш парсер - и вы можете использовать несколько парсеров, чтобы попытаться противодействовать этому! -) вызовет НАМНОГО больше ошибок в синтаксическом анализе, чем даже у людей с дислексией. Опять же, откалибруйте это на естественных и синтетических текстах, и вы

5
ответ дан 3 December 2019 в 04:53
поделиться

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

2
ответ дан 3 December 2019 в 04:53
поделиться

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

Вот сообщение в блоге от O'Reilly Radar о советах по использованию Mechanical Turk для выполнения вашей работы:

2
ответ дан 3 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: