在数据框中显示 NER Spacy 数据

Show NER Spacy Data in dataframe

我正在做一些网络抓取,以从 html 中导出文本信息,并使用 NER (Spacy) 来识别管理资产、地址和公司成立日期等信息。提取信息后,我想将其放入数据框中。

我正在使用以下脚本:

from bs4 import BeautifulSoup
import numpy as np
from time import sleep
from random import randint
from selenium import webdriver
import pandas as pd
import spacy
from spacy import displacy
import en_core_web_sm
import requests
import re

NER = spacy.load("en_core_web_sm")

url = "https://www.baincapital.com/"


driver = webdriver.Chrome("C:/Program Files/chromedriver.exe")
driver.get(url)  
sleep(randint(5,15))
soup = BeautifulSoup(driver.page_source, 'html.parser')
body=soup.body.text
body
body= body.replace('\n', ' ')
body= body.replace('\t', ' ')
body= body.replace('\r', ' ')
body= body.replace('\xa0', ' ')
text3= NER(body)
displacy.render(text3,style="ent",jupyter=True)

输出显示为:

我想把它放在下面的基本 table:

Entity Identified
Money 5 Billion
Date 1984
Org Bain Capital
Org Bain Capital Investor Portal Please
Cardinal four
Cardinal 24
GPE US

本质上,获取突出显示的信息并将其放入具有识别特征的数据框中。

获得纯文本的 body 后,您可以将文本解析为文档并获取所有实体及其标签和文本的列表,然后实例化一个 Pandas 数据框这些数据:

#... your code here ...
body=soup.body.text

# now, this is the modification:
body = ' '.join(body.split())
doc = NER(body)
entities = [(e.label_,e.text) for e in doc.ents]
df = pd.DataFrame(entities, columns=['Entity','Identified'])

请注意,body = ' '.join(body.split()) 行用于以比您使用的更简单、更短的方式标准化所有空格。