我正在使用IBM Watson的音调分析器分析文本,并试图提取与句子音调有关的所有信息(例如,sentence_id
、text
、text
、tones
、score
和tone_name
)并将其添加到dataframe中(带有列;sentence_id
、和
tone_name
)。这是我的输出示例:
> [{'document_tone': {'tones': [{'score': 0.551743,
'tone_id': 'analytical',
'tone_name': 'Analytical'}]},
'sentences_tone': [{'sentence_id': 0,
'text': '@jozee25 race is the basis on which quotas are implemented.',
'tones': []},
{'sentence_id': 1, 'text': 'helloooooo', 'tones': []}]},
{'document_tone': {'tones': []}},
{'document_tone': {'tones': [{'score': 0.802429,
'tone_id': 'analytical',
'tone_name': 'Analytical'},
{'score': 0.60167, 'tone_id': 'confident', 'tone_name': 'Confident'}]},
'sentences_tone': [{'sentence_id': 0,
'text': '@growawaysa @cricketandre i have the answer on top yard from dpw:it is not currently "surplus to govt requirements".it is still being used for garaging until a new facility is ready in maitland.the',
'tones': [{'score': 0.631014,
'tone_id': 'analytical',
'tone_name': 'Analytical'}]},
{'sentence_id': 1,
'text': 'cost of the housing options will of course depend on prospects for cross subsidisation.',
'tones': [{'score': 0.589295,
'tone_id': 'analytical',
'tone_name': 'Analytical'},
{'score': 0.509368, 'tone_id': 'confident', 'tone_name': 'Confident'}]}]},
{'document_tone': {'tones': [{'score': 0.58393,
'tone_id': 'tentative',
'tone_name': 'Tentative'},
{'score': 0.641954, 'tone_id': 'analytical', 'tone_name': 'Analytical'}]}},
{'document_tone': {'tones': [{'score': 0.817073,
'tone_id': 'joy',
'tone_name': 'Joy'},
{'score': 0.920556, 'tone_id': 'analytical', 'tone_name': 'Analytical'},
{'score': 0.808202, 'tone_id': 'tentative', 'tone_name': 'Tentative'}]},
'sentences_tone': [{'sentence_id': 0,
'text': 'thanks @khayadlangaand colleagues for the fascinating tour yesterday.really',
'tones': [{'score': 0.771305, 'tone_id': 'joy', 'tone_name': 'Joy'},
{'score': 0.724236, 'tone_id': 'analytical', 'tone_name': 'Analytical'}]},
{'sentence_id': 1,
'text': 'eyeopening and i learnt a lot.',
'tones': [{'score': 0.572756, 'tone_id': 'joy', 'tone_name': 'Joy'},
{'score': 0.842108, 'tone_id': 'analytical', 'tone_name': 'Analytical'},
{'score': 0.75152, 'tone_id': 'tentative', 'tone_name': 'Tentative'}]}]},
这是我为获得此输出而编写的代码:
result =[]
for i in helen['Tweets']:
tone_analysis = tone_analyzer.tone(
{'text': i},
'application/json'
).get_result()
result.append(tone_analysis)
首先,由于您的JSON格式不是很好,我使用的JSON来自这里的Tone analyzer API参考
使用API引用中的JSON和Pandas json_normalize,下面是我得到的代码
from pandas.io.json import json_normalize
jsonfile = {
"document_tone": {
"tones": [
{
"score": 0.6165,
"tone_id": "sadness",
"tone_name": "Sadness"
},
{
"score": 0.829888,
"tone_id": "analytical",
"tone_name": "Analytical"
}
]
},
"sentences_tone": [
{
"sentence_id": 0,
"text": "Team, I know that times are tough!",
"tones": [
{
"score": 0.801827,
"tone_id": "analytical",
"tone_name": "Analytical"
}
]
},
{
"sentence_id": 1,
"text": "Product sales have been disappointing for the past three quarters.",
"tones": [
{
"score": 0.771241,
"tone_id": "sadness",
"tone_name": "Sadness"
},
{
"score": 0.687768,
"tone_id": "analytical",
"tone_name": "Analytical"
}
]
},
{
"sentence_id": 2,
"text": "We have a competitive product, but we need to do a better job of selling it!",
"tones": [
{
"score": 0.506763,
"tone_id": "analytical",
"tone_name": "Analytical"
}
]
}
]
}
mydata = json_normalize(jsonfile['sentences_tone'])
mydata.head(3)
print(mydata)
tones_data = json_normalize(data=jsonfile['sentences_tone'], record_path='tones')
tones_data.head(3)
print(tones_data)
输出的dataframe将为
sentence_id ... tones
0 0 ...[{'score': 0.801827, 'tone_id': 'analytical', ...
1 1 ...[{'score': 0.771241, 'tone_id': 'sadness', 'to...
2 2 ...[{'score': 0.506763, 'tone_id': 'analytical', ...
[3 rows x 3 columns]
score tone_id tone_name
0 0.801827 analytical Analytical
1 0.771241 sadness Sadness
2 0.687768 analytical Analytical
3 0.506763 analytical Analytical
此外,我还为您创建了REPL以更改输入并在浏览器上运行代码--https://REPL.it/@aficionado/darkturquoiseunnaturalDistributedDatabase
请参考这个Kaggle链接以了解更多关于使用Pandas在Python中扁平化JSON的信息
问题内容: 我正在尝试获取词典列表中所有键的列表,以便填写csv.DictWriter的fieldnames参数。 以前,我有这样的事情: 我当时习惯于使用列表中的第一本字典并提取其键。 现在我有了类似的东西,其中一个字典比另一个字典具有更多的key:value对(可能是任何结果)。新密钥是根据来自API的信息动态添加的,因此它们可能会或可能不会出现在每个字典中,而且我事先也不知道会有多少个新密钥
我有一个列表作为响应返回。我需要从使用product.name和tariffplan.name的列表中获得一个项目。 我使用Java8。以下是我的方法。我拿到了卡。类元素的列表。然后,我需要从列表中获得具有指定“product.name”和“tariffplan.name”的单个项目。 是否可以用Restastured来做这件事?也许像我的例子一样使用。param方法?但是在我的示例中。param
我想为我的搜索引擎从数据库中提取一个基本的同义词列表。这包括通常拼写的名字,如Shaun vs.Shawn,Muhammad的不同变体,命名实体的首字母缩写,如United Nations(UN)或SARS(Severe acute respiratory syndrome)。 在提取之后,这个同义词列表将被放置在服务器中,并以这样的方式存储--相关术语/同义词的字符串。 示例 我使用了jaws
我有一个JSON响应,希望从响应中提取值列表,例如id的所有值。 我已经尝试了下面的代码,但无法实现,但它只是打印id的第一个值,即4。 我是初学者,我也不确定我们是否能达到同样的效果。任何帮助都将不胜感激。提前谢谢。
我有一个包含数据的.json文件,我想用它制作一个d3甜甜圈(饼图)。我对javascript不是特别精通,我能找到的每个示例要么来自内联json数据,要么json文件的结构与我的不同(我的是一个字典列表;它们通常是单个字典)。我已经排除故障几天了,但不知怎么的,我无法找到任何真正有效的方法。有什么想法/建议吗? 例如https://www.d3-graph-gallery.com/graph/d
请帮助我提取使用Jmetm。