我创建了一个函数,将语法特征返回给一组单词:
import nltk.tokenize
from io import StringIO
def get_pos_tag(string):
detM =['un','le']
nomM =['garçon','verre','chair']
#Entréé
test = nltk.word_tokenize(string)
#Pos-Tag de chaque entréé
for i in range(0,len(test)):
#Déterminant masculin singulier
if test[i] in detM:
CAT = "Det"
Nb = "Sg"
GND = "M"
return(test[i],":","CAT:",CAT,",","Genre:",GND,",","Nombre:",Nb)
#Nom Masculin Singulier
elif test[i] in nomM:
CAT = "N"
Nb = "Sg"
GND = "M"
return(test[i],":","CAT:",CAT,",","Genre:",GND,",","Nombre:",Nb)
现在在另一个脚本中,当我想将函数的输出保存到字符串或列表中时,我得到的是:
>>>import PosTag
>>> var1=PosTag.get_pos_tag("un garçon")
un : CAT: Det , Genre: M , Nombre: Sg
garçon : CAT: N , Genre: M , Nombre: Sg
>>> print (var1)
None
>>> var2=[]
>>> var2.append(PosTag.get_pos_tag("un garçon"))
un : CAT: Det , Genre: M , Nombre: Sg
garçon : CAT: N , Genre: M , Nombre: Sg
>>> print(var2)
[None]
我需要将结果存储在一个变量中,以便下一步使用它。你知道吗
也许你在找^{} 关键字。Yield本质上是将函数转换为一个生成器,它将不断返回值,直到到达末尾。你知道吗
您可以对其进行迭代,或直接将其转换为列表:
另外,文件末尾的
return get_pos_tag(string)
(在所有其他函数之外)实际上什么都不做(我不确定它是否有效)问题澄清旧答案:
这是因为您没有从
get_pos_tag()
内返回任何内容,而只是调用print
。print()
函数不传输任何值,只显示它们。你知道吗无论哪里有
print()
函数,都要用return
替换它。你知道吗任务的正确数据结构不是字符串列表,而是字典字典。你知道吗
作为使用示例:
收益率
以及
收益率
ps-为了测试我的解决方案,我用
s.split
替换了nltk.word_tokenize
(我还没有安装)。你知道吗相关问题 更多 >
编程相关推荐