Частота и отношения слов

Мне интересно, можно ли вообще получить десятку наиболее часто встречающихся слов в поле Elasticsearch по всему индексу или псевдониму.

Вот что я пытаюсь сделать:

Я индексирую текстовые документы, извлеченные из разных типов документов (Word, Powerpoint, PDF и т.д.), они анализируются и сохраняются в поле под названием doc_content. Я хотел бы знать, есть ли способ найти наиболее частое слово в определенном индексе, которые хранятся в поле doc_content.

Чтобы сделать его более понятным, допустим, что я индексирую счета от Amazon и eBay, например. Теперь давайте предположим, что у меня есть 100 счетов-фактур от amazon и 20 счетов-фактур от ebay. Предположим также, что слово "амазонка" происходит дважды в каждом счете-фактуре амазонки, а слово "ebay" происходит 3 раза в каждом счете ebay.

Теперь, есть ли способ получить совокупность сортировки, которая говорит мне, что слово "амазонка" появляется в моем индексе 200 раз (100 счетов-фактур x 2 вхождения/счет-фактура), а слово "ebay" происходит 60 раз (20 счета-фактуры x 3 вхождения/счета-фактуры).

Мой другой вопрос: возможно ли первое, тогда есть ли способ определить, какое наиболее частое слово происходит после определенного слова?

Например: позволяет предположить, что у меня есть 100 документов. 60 из этих документов содержат термин "старая кошка", а 40 содержат термин "старая собака" и ради аргумента позволяют предположить, что эти слова появляются только один раз в каждом документе.

Теперь, если мы можем получить частоту слова "старый", который в нашем случае должен быть 100. Можем ли мы затем определить отношение к слову, которое появляется сразу после него, чтобы иметь что-то вроде этого:

               __________ Cat (60)
              |
Old (100)-----|
              |__________ Dog (40)

Ответ 1

Чтобы получить временные частоты, вы можете использовать термин векторы. Однако сначала вам нужно их сохранить, а во-вторых, вы можете получить их только для данного документа.

Насколько я знаю, невозможно агрегировать над векторами сроков.

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

Кстати, аналогичные вопросы задавали раньше: