Spacy nl 没有正确地将句子大写

问题描述

我正在使用 Spacy 模型,并希望仅使用起始句和专有名词将纯文本大写。

我正在使用下面的代码

nlp = spacy.load("en_core_news_lg")
doc = nlp(text)
output_text = ""
for sent in doc.sents:
    for index,token in enumerate(sent):
        token_text = token.text
        if index == 0 or token.pos in (PROPN):
            token_text = token_text.capitalize()
        output_text += token_text + token.whitespace_
        
        output_text = output_text.strip() + " "

现在错误如下 如果 index == 0 或 token.pos in (PROPN):

TypeError: argument of type 'univ_pos_t' is not iterable

是否可以仅将其用于专有名词?

解决方法

你需要使用

if index == 0 or token.pos_ == 'PROPN':

此行将检查 index 是否设置为 0,或者当前令牌 POS 是否为 PROPN

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...