首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NLTK和Pandas -将synset添加到列表中

NLTK和Pandas -将synset添加到列表中
EN

Stack Overflow用户
提问于 2019-12-10 10:32:40
回答 1查看 190关注 0票数 1

我想要一个作为新行添加到dataframe的列表。

代码语言:javascript
复制
import nltk
import pandas as pd
from nltk.corpus import wordnet
import pandas as pd
import numpy as np


Overviewdataframe = pd.DataFrame([]) 
synonyms = []

for syn in wordnet.synsets("active"):
    for l in syn.lemmas():
            synonyms.append(l.name())  
            Overviewdataframe = Overviewdataframe.append(synonyms)
            synonyms = []

相反,该行被添加为列。你能帮帮我吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 17:41:47

TL;DR

代码语言:javascript
复制
from itertools import chain

import pandas as pd
from nltk.corpus import wordnet as wn

wordlist = ['active', 'fan', 'hop', 'grace']

words2lemmanames = [{'word': word, 'synset':ss.name(), 'lemma_names':ss.lemma_names()}
                    for word in wordlist for ss in wn.synsets(word)]
pd.DataFrame(words2lemmanames)

在Long中

在NLTK中查询WordNet接口时,查询一个单词会返回一个“概念”,也称为“同义词集”。

代码语言:javascript
复制
>>> wn.synsets('active')

[Synset('active_agent.n.01'), Synset('active_voice.n.01'), Synset('active.n.03'), Synset('active.a.01'), Synset('active.s.02'), Synset('active.a.03'), Synset('active.s.04'), Synset('active.a.05'), Synset('active.a.06'), Synset('active.a.07'), Synset('active.s.08'), Synset('active.a.09'), Synset('active.a.10'), Synset('active.a.11'), Synset('active.a.12'), Synset('active.a.13'), Synset('active.a.14')]

每个同义词集都有自己的词条名称列表,即

代码语言:javascript
复制
>>> wn.synsets('active')[0].lemma_names()
['active_agent', 'active']

您也可以直接使用它们的" name“来访问synset,通常的"name”约定是(i)第一个词条名称,然后点(ii) POS标签和点(ii)索引号。

代码语言:javascript
复制
>>> wn.synsets('active')[0] == wn.synset('active_agent.n.01')
True

最后,给定键-值对列表(即字典对象),您可以将其提供给pandas.DataFrame以将其转换为数据帧。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59259378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档