Используя Python & NLP, как я могу извлечь определенные текстовые строки и соответствующие числа, предшествующие строкам, из столбца Excel, содержащего много свободного текста? - PullRequest
0 голосов
/ 10 января 2019

Я относительно новичок в Python и очень плохо знаком с NLP (и nltk), и я искал в сети рекомендации, но не нашел полного решения. К сожалению, разреженный код, с которым я играю, находится в другой сети, но я включил пример электронной таблицы. Я хотел бы получить предлагаемые шаги на простом английском языке (более подробно, чем у меня ниже), чтобы я мог сначала попытаться написать сценарий самостоятельно на Python 3. Если бы вам не было просто помочь со сценарием ... в котором дело, спасибо.

Проблема: несколько столбцов другой надежной электронной таблицы очень неструктурированы и содержат от 500 до 5000 английских символов, которые рассказывают историю. Мне нужно существенно упорядочить его, вытащив измеримые данные. Мне нужно:

1) Поиск строки в предоставленном пользователем столбце неструктурированного свободного текста (пользователь вводит заголовок столбца) (я думаю, что я делаю это правильно)

2) Сделать эту строку НОВЫМ заголовком столбца в Excel (я думаю, что я делаю это правильно)

3) Захватите число перед строкой (это то место, где я застреваю. И, как вы увидите на листе, иногда между числом и текстом нет пробела, и, конечно, иногда есть орфографические ошибки)

4) Поместите это число в столбец NEW в той же строке (еще не дошли до этого шага)

Мне придется делать это несколько раз для нескольких ключевых слов, но я могу вычислить эту часть, как мне кажется, с помощью цикла или чего-то в этом роде. Большое спасибо за ваше время и опыт ...

Example of spreadsheet with unstructured free text

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я думаю, что нашел то, что искал. https://community.esri.com/thread/86096 имеет 3 или 4 сценария, которые, кажется, делают свое дело. Спасибо ..!

0 голосов
/ 10 января 2019

Если я правильно понимаю, сначала нам нужно получить числа из строки текста.

cell_val = sheet1wb1.cell(row=rowNum,column=4).value

Это создаст список, содержащий каждое число в строке

new_ = [int(s) for s in cell_val.split() if s.isdigit()]

print(new_)

Вы можете использовать список для присвоения значений столбцу. Затем определите значение от 1-го числа в списке до 5-го столбца

sheet1wb1.cell(row=rowNum, column=5).value = str(new_[1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...