Как бы я отсортировал списки часто используемых слов, чтобы найти эффективные комбинации, используя как можно более уникальные слова?
У меня есть списки наиболее часто используемых слов, полученные из общедоступных данных 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-граммами. Это как раз и есть заданная проблема. Вы, вероятно, не получите точного решения, но есть простые эвристики, которые хорошо работают.
Однако я не совсем понимаю, чем ваша первая проблема отличается от второй.