2

У нас есть список ключевых слов, связанных со списком документов. Список был создан из подсчетов частоты слов в тексте документа. Мы пытаемся добавить вес к ключевым словам, основываясь на том, присутствуют они в названии документа или нет. Например, если бы у нас был документ с именем Agency_Solutions.doc , ключевое слово agency было бы в списке выше, чем по telephone .

Чтобы усложнить дело, каждый документ имеет либо, the , как это топ ключевых слов, на основе подсчета. Конечно, все это должно быть исключено; Я установил столбец a с 171 «общим» словом для исключения.

Вот моя проблема: если я MATCH(WORD,TITLE,0) , Agency не равно Agency_Solutions (или Agency Solutions ; я использовал SUBSTITUTE для создания «чистых» версий всех заголовков) и не взвешивается. Если я SEARCH(WORD,TITLE) я взвешиваю a потому a в Agency_Solutions появляется a . FIND возвращает идентичные результаты для SEARCH . Рок. Трудное место

Я пробовал пару итераций, но никогда не получал результатов, которые идентифицируют ключевое слово как отдельную подстроку в имени документа. Есть идеи?

РЕДАКТИРОВАТЬ: Вот некоторые данные

Список исключений (вставьте в столбец A)

a
an
is
the
what
when
who

Документ, ключевое слово, количество (Cols B, C, & D)

Keyboard_and_mouse_problems.txt the 15
Keyboard_and_mouse_problems.txt an  15
Keyboard_and_mouse_problems.txt a   14
Keyboard_and_mouse_problems.txt when    12
Keyboard_and_mouse_problems.txt system  8
Keyboard_and_mouse_problems.txt keyboard    8
Keyboard_and_mouse_problems.txt mouse   8
Keyboard_and_mouse_problems.txt when    9
Keyboard_and_mouse_problems.txt what    9
Keyboard_and_mouse_problems.txt who 8
Keyboard_and_mouse_problems.txt is  8
Keyboard_and_mouse_problems.txt phone   6
Keyboard_and_mouse_problems.txt help    6
Keyboard_and_mouse_problems.txt desk    5
Keyboard_and_mouse_problems.txt cable   4
Keyboard_and_mouse_problems.txt jack    4

Agency_Solutions.txt    X   2
Agency_Solutions.txt    c   1
Agency_Solutions.txt    on  1

Тогда мои формулы:

Col E   =IFERROR(VLOOKUP(C2,$A$2:$A$225,1,0),"notFound")    Is this in the exclusion list?
Col F   =IFERROR(VLOOKUP(C2,$A$2:$A$225,1,0),"")        Exclude this word
Col G   =IF(F2=C2,0,C2)                     Include this word
Col H   =IF(ISNUMBER(SEARCH(C2,B2)),100,0)          Title Weight
Col I   =IF(G2=0,0,D2+H2)                   Weighted Keywords
Col J   =IF(AND(H2=100,G2=0),"BAD","OK")            OK or Bad calculations

2 ответа2

3

Вы должны попробовать VLOOKUP с подстановочными знаками, например, если у нас есть apple в A1 , =VLOOKUP("*"&A1&"*";B:C;2;0) будет соответствовать любой строке, в которой есть apple независимо от позиции. Смотрите больше мой другой ответ: https://superuser.com/a/552742/187330

Совет: чтобы избежать чувствительности к регистру, используйте функцию LOWER для сравнения.

1

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

=ISNUMBER(SEARCH(" "&WORD&" "," "&TITLE&" "))

.... хотя это падает, если у вас есть знаки препинания, такие как _ или. в TITLE ..... но вы можете использовать любое количество функций SUBSTITUTE чтобы заменить их пробелами вроде этого

=ISNUMBER(SEARCH(" "&WORD&" "," "&SUBSTITUTE(SUBSTITUTE(TITLE,"_"," "),"."," ")&" "))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .