Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据上下文在文本中查找关键字?_Python_Json - Fatal编程技术网

Python 如何根据上下文在文本中查找关键字?

Python 如何根据上下文在文本中查找关键字?,python,json,Python,Json,我有一个关键字列表,这些关键字存储在一个名为ocations.json的json文件中,还有一个包含50000多条记录的数据库 许多记录都有维基百科链接。通过连接到维基百科,我正在搜索每一条记录的所有关键词,并试图找出这些关键词是否在记录传记的第一段中传递 下面的代码正在查找关键字,但是我需要一个更聪明的算法,程序将根据文本上下文计算关键字 重新导入 导入json 导入请求 从bs4导入BeautifulSoup作为BS def get_文本(url): r=requests.get(url,超

我有一个关键字列表,这些关键字存储在一个名为
ocations.json的json文件中,还有一个包含50000多条记录的数据库

许多记录都有维基百科链接。通过连接到维基百科,我正在搜索每一条记录的所有关键词,并试图找出这些关键词是否在记录传记的第一段中传递

下面的代码正在查找关键字,但是我需要一个更聪明的算法,程序将根据文本上下文计算关键字

重新导入
导入json
导入请求
从bs4导入BeautifulSoup作为BS
def get_文本(url):
r=requests.get(url,超时=5)
div=BS(r.content,“html.parser”)。选择一个(“.mw content ltr”)
p=BS(str(div),“html.parser”).find_all(“p”)
尝试:
返回[i.text!如果i.text!=“\n”][0]
除索引器外:
返回
def查找职业(url、关键字):
text=get\u text(url=url)
如果不是文本:
返回url,无
职业=[]
对于关键字中的关键字:
对于re.findall(f“\s{keyword.lower()}”,text.lower())中的i:
如果关键字不在职业中:
职业。附加(关键字)
返回url,职业
将open(“cavications.json”)作为f:
words=json.load(f)
对于某些记录,上面的代码可以正确地查找关键字。下面您可以看到正确匹配的示例:

url1=”https://en.wikipedia.org/wiki/Gerolamo_Cardano"
打印(查找职业(url1,单词))
上述url的第一段如下:

Gerolamo(也叫Girolamo[3]或Geronimo[4])Cardano(意大利语:[dʒeˈrɔlamo karˈdano];法语:Jérôme Cardan;拉丁语:Hieronymus Cardanus;1501年9月24日至1576年9月21日)是意大利语
多面手
,其兴趣和熟练程度从
数学家生物学家
物理学家
化学家
占星家
天文学家
哲学家
作家
赌徒
[5]他是文艺复兴时期最有影响力的数学家之一,是概率论基础上的关键人物之一,也是西方世界二项式系数和二项式定理最早的介绍者。他写了200多部科学著作

我得到的输出如下:

('https://en.wikipedia.org/wiki/Gerolamo_Cardano“,[“占星家”、“天文学家”、“生物学家”、“化学家”、“赌徒”、“数学家”、“哲学家”、“医生”、“物理学家”、“博学家”、“作家”])
但是对于下面的一些记录,我得到了错误的结果

url2=”http://en.wikipedia.org/wiki/Barbara_Villiers"
打印(查找职业(url2,单词))
上述url的第一段如下:

Barbara Palmer,克利夫兰第一公爵夫人(1640年11月27日[O.S.11月17日]-1709年10月9日),通常以其婚前姓Barbara Villiers或卡斯特莱曼伯爵夫人的头衔为人所知,她是维利埃家族的一位英国皇家情妇,可能是英国国王查理二世众多情妇中最臭名昭著的一位,她有五个孩子,所有的孩子都被承认并随后被封为贵族。芭芭拉是许多肖像画的主题,尤其是宫廷画家彼得·莱利爵士的肖像画。在镀金时代,用她的肖像来装饰庄园是时尚的

下面您看到的是我得到的输出,这并不完全正确

('http://en.wikipedia.org/wiki/Barbara_Villiers“,[“国王”、“情妇”、“画家”])
我知道为什么程序会找到关键字
“King”
“Painter”
,尽管它们不是
芭芭拉·维利尔斯的功能。因为这些关键字也存储在json文件中,并且它们也在维基百科页面的第一段中传递

我的第一个问题是,有没有办法通过评估文本的上下文来正确地找到关键词?如果是,你有什么建议

第二个问题是,如果我们可以使用一种方法来搜索和查找单词,该方法可以根据文本的上下文来评估搜索到的单词,那么最终是否有必要检查所有50000条记录,以查看算法是否产生了准确的结果

编辑:在下面,您将看到
职业.json
文件的一些项目

[
    "Accessory designer",
    "Acoustical engineer",
    "Acrobat",
    "Actor",
    "Actress",
    "Advertising designer",
    "Aeronautical engineer",
    "Aerospace engineer",
    "Agricultural engineer",
    "Anesthesiologist",
    "Anesthesiologist Assistant",
    "Animator",
    "Anthropologist",
    "Applied engineer",
    "Arborist",
    "Archaeologist",
    "Archimime",
    "Architect",
    "Army officer",
    "Art administrator",
    "Artisan",
    [...]
]
问题1:有没有一种方法可以通过评估文本的上下文来正确找到关键词?如果是,你有什么建议? 关键字检测(也称为关键字提取)属于

关键字提取的一些技术包括:

  • 词语搭配与共现
  • TF-IDF(术语频率的缩写-反向文档频率)
  • RAKE(快速自动关键词提取)
  • 支持向量机(SVM)
  • 深度学习
问题2:如果我们可以使用一种方法来搜索和查找单词,该方法可以根据文本的上下文评估搜索到的单词,那么最终是否有必要检查所有50000条记录,以查看算法是否产生了准确的结果?
开发统计模型可能不需要培训数据,而构建深度学习模型可能需要大量数据。所以,这一切都取决于使用哪种方法。

Hmm,我想知道
journals.json
是什么样子,里面是否有上下文信息?也许您应该包含一个关于该数据的最小示例—足以测试和复制您的问题。在您的示例中,关于从web上提取数据的所有内容,也许mre应该只包含一些示例Wikipedia页面的第一段。好的,我现在正在编辑我的文章,并将显示
journalies.json
文件的一些项目。你的答案是什么