gpt4 book ai didi

python - 如何使用 Freebase 标记一个非常大的未标记 NLP 数据集?

转载 作者:太空狗 更新时间:2023-10-30 02:49:27 25 4
gpt4 key购买 nike

我正在使用的词汇:

nounphrase -- 指代特定人物、地点或想法的短语。不同名词短语的示例包括“Barack Obama”、“Obama”、“Water Bottle”、“Yellowstone National Park”、“Google Chrome web browser”等。

类别——定义哪些名词短语属于它,哪些不属于它的语义概念。类别的示例包括“政治家”、“家居用品”、“食品”、“人物”、“运动队”等。因此,我们认为“巴拉克奥巴马”属于“政治家”和“人物”,但不不属于“食品”或“运动队”。

我有一个非常大的未标记 NLP 数据集,其中包含数百万个名词短语。我想使用 Freebase 来标记这些名词短语。我有一个 Freebase 类型到我自己的类别的映射。我需要做的是为我拥有的每个 Freebase 类型下载每个示例。

我面临的问题是需要弄清楚如何构建此类查询。在高层次上,查询应该询问 Freebase “主题 XX 的所有示例是什么?”并且 Freebase 应该响应“这是主题 XX 的所有示例的列表”。如果有人能给我这个查询的语法,我将不胜感激。如果可以用 Python 完成,那就太棒了:)

最佳答案

查询的基本形式(例如一个人)是

[{
"type":"/people/person",
"name":None,
"/common/topic/alias":[],
"limit":100
}]​

http://wiki.freebase.com/wiki/MQL_Manual 提供了文档

使用 Python 库中的 freebase.mqlreaditer() http://code.google.com/p/freebase-python/是循环遍历所有这些的最简单方法。在这种情况下,“limit”子句确定用于查询的 block 大小,但您将在 API 级别单独获得每个结果。

顺便说一句,您打算如何区分总统 jack ·肯尼迪、投手、足球运动员、书籍等的歧义 http://www.freebase.com/search?limit=30&start=0&query=jack+kennedy如果您有足够的上下文可以使用它来消除歧义,您可能需要考虑从 Freebase 捕获其他信息(出生和死亡日期、书籍作者、分配的其他类型等)。

过了某个点,从批量数据转储而不是 API 工作可能更容易和/或更有效 http://wiki.freebase.com/wiki/Data_dumps

编辑 - 这是一个工作的 Python 程序,它假定您在名为“types.txt”的文件中有一个类型 ID 列表:

import freebase

f = file('types.txt')
for t in f:
t=t.strip()
q = [{'type':t,
'mid':None,
'name':None,
'/common/topic/alias':[],
'limit':500,
}]
for r in freebase.mqlreaditer(q):
print '\t'.join([t,r['mid'],r['name']]+r['/common/topic/alias'])
f.close()

如果您使查询变得更加复杂,您可能希望降低限制以避免超时,但是对于像这样的简单查询,将限制提高到默认值 100 以上将使其更高效查询更大的 block 。

关于python - 如何使用 Freebase 标记一个非常大的未标记 NLP 数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com