Как бы я отсортировал списки часто используемых слов, чтобы найти эффективные комбинации, используя как можно более уникальные слова?

У меня есть списки наиболее часто используемых слов, полученные из общедоступных данных Google ngram.

Я имею:

6800 частых 2 грамма 4800 частых 3 грамма 2500 частых 4 грамма 1100 частых 5 граммов

Пример 2 Ngram будет что-то вроде:

"собака", "книга", "три стула" и т. д.

пример 5 нграмм будет что-то вроде: "когда-то давно", "когда-то было", "это было темно и" и т. д.

У меня также есть список из 2000 частых слов.

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

Например, если я найду 200 2 грамма, 40 3 грамма, 50 4 грамма и 20 5 граммов, которые используют 1800 часто используемых слов, это будет успех. Я составил эти соотношения, но я бы хотел найти менее 500 комбинаций, в которых используется большинство слов.

2) Я также хотел бы найти наименьшее количество комбинаций различных нграмм, которое содержит наибольшее общее количество слов из списков.

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

У меня проблема в том, что я понятия не имею, как мне поступить. Я думаю, что hadoop и mapreduce находятся в правильном направлении... но любая помощь будет принята с благодарностью!

1 ответ

Решение

У вас порядка 15 тысяч нграмм. Это очень маленький набор данных. Вероятно, он уместится в 1 МБ памяти, вероятно, менее 1/5000 от общей памяти на вашем компьютере. Вам не нужен hadoop, чтобы решить такую ​​проблему. Кроме того, на самом деле это не проблема машинного обучения, это просто проблема оптимизации.

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

Однако я не совсем понимаю, чем ваша первая проблема отличается от второй.

Другие вопросы по тегам