Как я могу найти только "интересные" слова из корпуса?
Я разбираю предложения. Я хочу знать релевантное содержание каждого предложения, свободно определяемого как "полууникальные слова" по отношению к остальной части корпуса. Нечто похожее на "статистически невероятные фразы" Amazon, которые, кажется, (часто) передают характер книги через странные строки слов.
Моим первым проходом было начать составление списка общих слов. Это выбивает легкие, такие как a
, the
, from
и т. д. Очевидно, получается, что этот список становится довольно длинным.
Одна идея состоит в том, чтобы создать этот список: составьте гистограмму частот слова в корпусе и отрежьте верхние 10% или что-то подобное (IE the
происходит 700 раз, from
600 раз, но micropayments
только 50, что находится под отсечкой и поэтому актуально).
Еще один алгоритм, о котором я только что узнал из Hacker News, сегодня - это Tf idf, который выглядит как полезный.
Какие другие подходы будут работать лучше, чем две мои идеи?
4 ответа
Взгляните на эту статью (Уровень статистики слов: поиск ключевых слов в литературных текстах и символических последовательностях, опубликованных в Phys. Rev. E).
Картинка на первой странице вместе с подписью объясняет важнейшее наблюдение. В Дон Кихоте слова "но" и "Кихот" появляются с одинаковыми частотами, но их спектры весьма различны (вхождения "Кихота" сгруппированы, в то время как вхождения "но" расположены более равномерно). Поэтому "Кихот" можно классифицировать как интересное слово (ключевое слово), а "но" игнорируется.
Это может или не может быть то, что вы ищете, но я думаю, это не помешает, чтобы ознакомиться с этим результатом.
Я думаю, что то, что Amazon называет "Statiscal невероятные фразы", - это слова, которые невероятны по отношению к их огромному объему данных. По сути, даже если слово повторяется 1000 раз в данной книге А, если эта книга является единственным местом, где оно появляется, то это SIP, потому что вероятность его появления в любой данной книге равна нулю (потому что это специфично для книги А). Вы не можете действительно продублировать это множество данных для сравнения информации, если сами не работаете с большим количеством данных.
Что такое много данных? Что ж, если вы анализируете литературные тексты, вам нужно скачать и обработать пару тысяч книг из Гутенберга. Но если вы анализируете юридические тексты, то вам придется специально вводить содержание юридических книг.
Если, как, вероятно, имеет место, у вас нет большого количества данных в качестве роскоши, то вы должны, так или иначе, полагаться на частотный анализ. Но вместо того, чтобы рассматривать относительные частоты (фракции текста, как это часто считается), рассмотрим абсолютные частоты.
Например, hapax legomenon, также известный в области сетевого анализа как 1-мыши, может представлять особый интерес. Это слова, которые встречаются в тексте только один раз. Например, в " Улиссе" Джеймса Джойса эти слова встречаются только один раз: посттексильный, едкий, романский, макромир, диаконал, сжимаемость, более тяжелый. Они не являются статистически невероятными фразами (как, например, "Леопольд Блум"), поэтому они не характеризуют книгу. Но это достаточно редкие термины, которые встречаются только один раз в выражении этого автора, поэтому вы можете считать, что они каким-то образом характеризуют его выражение. Это слова, которые, в отличие от обычных слов, таких как "цвет", "плохо" и т. Д., Которые он явно стремился использовать.
Так что это интересный артефакт, и дело в том, что его довольно легко извлечь (например, O(N) с постоянной памятью), в отличие от других, более сложных, индикаторов. (И если вам нужны элементы, которые встречаются несколько чаще, то вы можете обратиться к 2-мышам, ..., 10-мышам, которые также легко извлекаются.)
TF-IDF - это один из способов. Если вы хотите поговорить о предложениях, а не словах, в дополнение к превосходным ссылкам выше, вот простая схема:
Создайте цепочку Маркова из большого образца корпуса. Короче говоря, вы строите цепочку Маркова, записывая частоту каждого n-кортежа во входном тексте. Например, предложение "это тест" с 3-мя кортежами было бы (это, есть, а), (есть, тест). Затем вы группируете каждый n-кортеж по первым n-1 слагаемым, что позволяет вам ответить на вопрос "с учетом предыдущих n-1 слов, какова вероятность того, что следующее слово будет таким?"
Теперь для каждого предложения во входном документе обойдите цепь Маркова. Вычислите вероятность того, что вы увидите предложение, умножив все вероятности, с которыми вы сталкиваетесь, проходя цепочку вместе. Это дает вам оценку того, насколько "вероятно" это предложение во входном корпусе. Вы можете захотеть умножить эту вероятность на длину предложения, так как более длинные предложения статистически менее вероятны.
Теперь вы связали с каждым предложением в своем входе вероятность. Выберите n наименее вероятных предложений - это "интересные", для некоторого определения "интересные".
Скрытый семантический анализ (LSA) http://www.puffinwarellc.com/index.php/news-and-articles/articles/33.html