Учитывая список предопределенных терминов, которые могут быть образованы одним, двумя или даже тремя словами, проблема состоит в том, чтобы подсчитать их вхождения в наборе документов со свободным словарем (т. Е. Много слов).
terms= [
[t1],
[t2, t3],
[t4, t5, t6],
[t7],...]
и документы, в которых должны быть признаны эти термины, имеют вид:
docs = [
[w1, w2, t1, w3, w4, t7], #d1
[w1, w4, t4, t5, t6, wi, ...], #d2
[wj, t7, ..] ..] #d3
Желаемый результат должен быть
[2, 1, 1, ...]
Этоу первого документа есть два термина, представляющих интерес, у второго - 1 (состоит из трех слов) и т. д.
Если необходимо учитывать термины, где длина слова равна 1, то я мог бы легко заказать каждый документв алфавитном порядке удалите повторяющиеся термины (набор), а затем пересекаются с терминами размером 1 слово.Подсчет повторяющихся слов - результат поиска.
Но с условиями длины> = 2 вещи становятся хитрыми.
Я использовал gensim для формирования пакета слов и определения индексов при использованииновая фраза
например,
dict_terms = corpora.Dictionary(phrases)
sentence = unseen_docs[0]
idxs = dict_terms[sentence]
И затем посчитайте количество идентификаторов, учитывая, являются ли индексы последовательными, это будет означать, что был замечен один термин, а не 2 o 3 из них.
Любые предложения.