#python #nlp #spacy #named-entity-recognition #visualizer
Вопрос:
Я использую Spacy для визуализации NERs в блокноте следующим образом:
import spacy
from spacy import displacy
text = "When Sebastian Thrun started working on self-driving cars at Google in 2007, few people outside of the company took him seriously."
nlp = spacy.load("en_core_web_sm")
doc = nlp(text)
displacy.render(doc, style="ent")
(Это пример в документации spacy)
Пока все хорошо.
Вопрос в том, можно ли получить доступ к самому HTML-объекту, а не просто к его визуализации, чтобы добавить к нему функциональность с помощью HTML. Точнее, то, что я ищу, — это способ запуска функции при нажатии каждой из этих «кнопок». эта работа, которую я ищу, предназначена для работы в концентраторе jupyter, то есть в лаборатории Jupyter, поэтому решения, использующие любой веб-фрейм, такой как streamlit или flask, или что-то еще, что может быть запущено на локальном сервере, выходят за рамки.
Спасибо.
ПРАВКА 1: Если вы используете следующий код в лаборатории Jupyter, вы можете получить простой HTML:
displacy.render(doc, style="ent", jupyter'False'))
вы бы получили:
'<div class="entities" style="line-height: 2.5; direction: ltr">When n<mark class="entity" style="background: ....... etc....</div>'
Идея заключается в преобразовании кнопок:
…в кликабельные кнопки.
Я предполагаю, что путь состоит в том, чтобы проанализировать кнопку добавления HTML и сделать «что-то» с помощью ipywidgets jslink или около того.
Ответ №1:
Вы можете использовать ipywidgets:
from ipywidgets import interact_manual
@interact_manual
def html():
path="file_name.html"
Html_file= open(path,"w")
Html_file.write(displacy.render(doc, style="ent"))
Html_file.close()
Это сохранит вывод в виде файла html при нажатии кнопки.
Комментарии:
1. Спасибо @NicolasPeruchot, но я имел в виду кое-что другое. Я хотел бы преобразовать любую из пометок NER в отображаемом тексте в кнопку.