У меня две таблицы.
В одной таблице есть два столбца, в одном из которых указан идентификатор, а в другом - аннотации документа длиной около 300-500 слов. Всего около 500 рядов.
Другая таблица имеет только один столбец и> 18000 строк. Каждая ячейка этого столбца содержит отдельный акроним, такой как NGF, EPO, TPO и т. д.
Меня интересует сценарий, который будет сканировать каждое резюме в таблице 1 и идентифицировать один или несколько акронимов, присутствующих в нем, которые также присутствуют в таблице 2.
Наконец, программа создаст отдельную таблицу, в которой первый столбец будет содержать содержимое первого столбца таблицы 1 (т.е. идентификатор) и акронимы, найденные в документе, связанном с этим идентификатором.
Может ли помочь кто-нибудь со знанием Python, Perl или любого другого языка сценариев?



Мне кажется, что вы пытаетесь объединить две таблицы, в которых аббревиатура встречается в аннотации. т.е. (псевдо SQL):
SELECT acronym.id, document.id
FROM acronym, document
WHERE acronym.value IN explode(documents.abstract)
Учитывая желаемую семантику, вы можете использовать наиболее простой подход:
acronyms = ['ABC', ...]
documents = [(0, "Document zeros discusses the value of ABC in the context of..."), ...]
joins = []
for id, abstract in documents:
for word in abstract.split():
try:
index = acronyms.index(word)
joins.append((id, index))
except ValueError:
pass # word not an acronym
Это простая реализация; однако у него есть n кубов времени выполнения, поскольку acronyms.index выполняет линейный поиск (не меньше нашего самого большого массива). Мы можем улучшить алгоритм, сначала построив хеш-индекс аббревиатур:
acronyms = ['ABC', ...]
documents = [(0, "Document zeros discusses the value of ABC in the context of..."), ...]
index = dict((acronym, idx) for idx, acronym in enumberate(acronyms))
joins = []
for id, abstract in documents:
for word in abstract.split():
try
joins.append((id, index[word]))
except KeyError:
pass # word not an acronym
Конечно, вы можете рассмотреть возможность использования реальной базы данных. Таким образом, вам не придется реализовывать свои объединения вручную.
Большое спасибо за быстрый ответ. Я предполагаю, что решение псевдо-SQL предназначено для MYSQL и т. д. Однако оно не работает в Microsoft ACCESS.
второй и третий, я полагаю, предназначены для Python. Могу ли я использовать аббревиатуру и документ как входные файлы? бабру
Это не сработало в Access, потому что к таблицам обращаются иначе (например, акроним. [Id])
Какие инструменты вы используете? С какой частью этого вы испытываете трудности?