Коллокация - это последовательность токенов, которые лучше обрабатываются как один токен при разборе, например «Красная сельдь» имеет значение, которое не может быть получено из ее компонентов. Получение полезного набора словосочетаний из корпуса включает ранжирование n-грамм по некоторой статистике (частота n-грамм, взаимная информация, логарифмическая вероятность и т. Д.) С последующим разумным ручным редактированием.
Очки, которые вы, кажется, игнорируете:
(1) корпус должен быть довольно большим ... пытаться получить словосочетания из одного предложения, как вы полагаете, бессмысленно.
(2) n может быть больше 2 ... например анализ текстов, написанных о китайской истории 20-го века, приведёт к появлению «значительных» биграмм, таких как «Мао Цзэ» и «Цзэ Тун».
Чего вы на самом деле пытаетесь достичь? Какой код вы написали до сих пор?