将 <start> 和 <end> 标记添加到标记化文档的行

Adding <start> and <end> tokens to lines of a tokenized document

如果我犯了一个极其微不足道的错误,我深表歉意!本质上,我有一个标记化的下载文档(我使用 NLTK 以正常方式对其进行标记化,即 tokens = word_tokenize(f.read()),意思是 tokens 是一个列表)。我想在每行的开头和结尾添加开始和结束标记。我还有一本字典 vocab,它听起来像(将每个单词存储在文档中)。

我试过的两件事是:

for line in tokens:
    line.insert(0,'<start>')
    line.insert(len(line)-1,'<end>')
    vocab['<start>']+=1
    vocab['<end>']+=1

和:

for line in tokens:
    line=['<start>']+line+['<end>']
    vocab['<start>']+=1
    vocab['<end>']+=1

如果我使用 .insert() 方法,我会得到 AttributeError: 'str' object has no attribute 'insert'。如果我尝试将 start/end 标记连接到标记列表中的每一行,我会得到 TypeError: can only concatenate list (not "str") to list. 不太确定如何解决此问题,因此我将不胜感激 :)

试试这个。

for i in range(len(tokens)):
    tokens[i] = '<start>' + tokens[i] + '<end>'
    vocab['<start>']+=1
    vocab['<end>']+=1

基本上它所做的是遍历每一行并向每一行添加开始和结束标记。使用range(len(tokens)),可以直接改变元素在tokens中的值。