0
import re
import nltk
import pandas as pd
from nltk.chunk import RegexpParser
from textblob import TextBlob
data = open('data.txt', 'r')
data = data.read()

# region Fetch Account Type
chunkData = r"""DataChunk: {(<NNP><NNP>+<CD>+)}
  }<JJ|IN|DT|TO>+{"""



lines = [line for line in open('data.txt')]
lstLines=data.split('|')
dataLines=[]
for lines in lstLines:
    dataLines=lines.split("\n")

for line in dataLines:
    if 'Data' in line:
        DataTags = TextBlob(line).tags
        Datachunker = RegexpParser(chunkData)
        Datachunked = Datachunker.parse(DataTags)

        for chunk in Datachunked:

                if type(chunk) == nltk.tree.Tree and chunk.label() == "DataChunk":
                    DatachunkedLst = chunk.leaves()
                    Datachunked = [leaf[0] for leaf in DatachunkedLst if leaf[1] == 'CD']
                    Data = '/'.join(Datachunked)

错误:如果 type(chunk) == nltk.tree.Tree 和 chunk.label() == "DataChunk": TypeError: 'str' object is not callable

但是我可以打印chunk.label()

4

1 回答 1

0

我怀疑正在发生以下情况:

在你的代码中的某个地方——它不包含在你的代码片段中——你将一个字符串值分配给一个名为 的变量type,例如:

type = "context-free"

这正是您的错误消息:

>>> type = "context-free"
>>> type(object())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable

我认为这很可能发生在这里;至少我经常想到我想在变量中存储某种“类型”,但我通常会避免这样做,因为你在这里看到的那种麻烦。

避免此类错误的一种方法是使用 linter:由编辑器在后台运行的工具,检查您的代码并发现像这样的危险内容。我强烈建议您尝试一个!

于 2017-05-29T07:46:56.493 回答