如何使用 Python 识别抓取网页中的完整句子
Posted
技术标签:
【中文标题】如何使用 Python 识别抓取网页中的完整句子【英文标题】:How to identify full sentences in a scraped web page with Python 【发布时间】:2022-01-23 06:38:28 【问题描述】:我目前正在从事一个学校项目,并尝试分析不同网页上的文章。在 BeautifulSoup 的帮助下,我能够从内容中清除所有代码部分。
现在,我想清除其他部分,例如菜单、站点地图条目、按钮等,以便仅将完整的句子作为网页中的文本。你知道我是如何识别完整句子的吗
The sequel trilogy is the third installment of films of the Star Wars saga to be produced.
但要清除作为一个组没有意义的单词,如导航
Explore Trending Navigation About Us Community
我已经使用了词的标记化,但这通常用于清理单数/复数、结尾、停用词等意义上的单词。我希望文本像它所写的那样,但没有“噪音”。
我希望我能够以一种可以理解的方式描述我的问题。
【问题讨论】:
创建一个set
,其中包含您要列入黑名单的字词,然后检查该字词是否在set
中并跳过打印
@MendelG 不幸的是,单词总是会改变,因为它应该是从不同网页获取文本作为句子的通用解决方案(运行时未知)。
您可以尝试查找标签,这样您就不会从找不到您需要的文本的标签中获取文本,或者从可能位于文本的标签中获取文本,例如仅从段落和标题标签。此外,通过检查第一个字母是否大写并以逗号结尾,分别检查您从中获取文本的每组标签
【参考方案1】:
1.快速基于规则的解决方案:language-tool 该库允许您检测语法错误和拼写错误
示例用法:
import language_tool_python
tool = language_tool_python.LanguageTool('en-US')
text = 'A sentence with a error in the Hitchhiker’s Guide tot he Galaxy'
matches = tool.check(text)
len(matches)
2
查看一些 Match 对象属性:
matches[0].ruleId, matches[0].replacements # ('EN_A_VS_AN', ['an'])
('EN_A_VS_AN', ['an'])
matches[1].ruleId, matches[1].replacements
('TOT_HE', ['to the'])
打印一个匹配对象:
print(matches[1])
Line 1, column 51, Rule ID: TOT_HE[1]
Message: Did you mean 'to the'?
Suggestion: to the
2如果这对您不起作用,请尝试基于深度学习的解决方案。您必须为句子正确性训练一个文本分类模型。您可以在 语言可接受性语料库 (CoLA) 数据集上训练您的模型,如 this tutorial BERT 中所述。 colab-notebook 可能需要一些调试。 Another tutorial.
3. 更好的解决方案是修改基于 T5 的 sentence doctor。它试图纠正在句子中发现的错误或错误。您只需要知道一个句子是否正确,因此您必须修改此模型的最后一层,然后进行微调。 GPU 内存可能是一个限制,因为 T5 很大。
【讨论】:
以上是关于如何使用 Python 识别抓取网页中的完整句子的主要内容,如果未能解决你的问题,请参考以下文章