如何取消此代码输出的令牌?
类核心:
def __init__(self, user_input):
pos = pop(user_input)
subject = ""
for token in pos:
if token.dep == nsubj:
subject = untokenize.untokenize(token)
subject = S(subject)
我尝试过: https://pypi.org/project/untokenize/
MosesDetokenizer
.join()
但是我的最后一个代码有这个错误(来自这篇文章):
TypeError: 'spacy.tokens.token.Token' object is not iterable
.join()的此错误:
AttributeError: 'spacy.tokens.token.Token' object has no attribute 'join'
对于MosesDetokenizer: text = u“ {}” .format(“” .join(tokens)) TypeError:只能加入可迭代的
答案 0 :(得分:0)
所有有效的令牌都保持其上下文不变,因此可以重新创建所有文本而不会丢失任何数据。
对于您而言,您要做的就是:
''.join([token.text_with_ws for token in doc])
由于属性text_with_ws
具有标记及其相应的空白字符(如果存在)。
答案 1 :(得分:0)
SpaCy令牌具有与之关联的doc对象,因此这将为您提供原始句子作为字符串:
import spacy
nlp = spacy.load('en')
doc = nlp("I like cake.")
token = doc[0]
print(token.doc) # prints "I like cake."
答案 2 :(得分:0)
@RazvanP 我相信您这里需要获得以下输出
['I', 'like', 'cake', '.']
如果是,这是代码。
new_list=[]
doc = nlp("I like cake.")
for i in doc:
new_list.append(''+i.text+'')
print(new_list)
看看这是否适合您。