在数据框中显示 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())
行用于以比您使用的更简单、更短的方式标准化所有空格。
我正在做一些网络抓取,以从 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())
行用于以比您使用的更简单、更短的方式标准化所有空格。