Извлечение контекста вокруг слова в предложении

Предположим, у меня очень длинный текст, и я хотел бы выделить определенную длину контекста вокруг определенного слова. Например, в следующем тексте я хотел бы выделить 8 слов вокруг слова воин.

........

........

... умер. Он был очень храбрым воином, борющимся за свободу вопреки всему ...

........

........

В этом случае результат будет

Он был очень храбрым воином, борющимся за свободу

Обратите внимание, как я отбросил слово «умер», так как я предпочел бы начинать с начала полного предложения, и как я извлек больше, чем 8 слов, потому что fight for freedom гораздо значительнее, чем просто борьба за.

Существуют ли какие-либо алгоритмы или исследования в этой области, которым я мог бы следовать? Как мне подойти к решению этой проблемы.


person vondip    schedule 13.08.2016    source источник


Ответы (2)


  1. Вы можете использовать RegEx, чтобы получить целое предложение, содержащее слово, которое вы ищете.
  2. Затем используйте алгоритм извлечения информации, чтобы найти более удобные 8 слов.

Я нашел некоторую реализацию Python обоих

Для регулярного выражения смотрите здесь

Алгоритм извлечения см. здесь

Надеюсь, что это поможет вам

person Gor    schedule 13.08.2016
comment
обратите внимание, что для того, что показано в ссылке, parsey mcparseface имеет тенденцию работать немного лучше, чем nltk - person thang; 12.06.2017

Давайте разделим вашу проблему на части и оставим ее независимой от какого-либо языка программирования:

  1. Если вы хотите использовать слово «бороться» вместо «сражаться», вам следует предварительно обработать свои данные. Пожалуйста, ознакомьтесь с методами лемматизации и выделения корней, которые дадут вам корень слов.

  2. Кроме того, еще одним шагом предварительной обработки текста будет удаление стоп-слов из текста. Такие слова, как, будет, если, но и т. Д., Будут удалены.

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

Надеюсь это поможет.

person Saurabh Jain    schedule 20.06.2019