我最近编写了一个代码来处理文本分析,但是在python中操作某些数据类型时遇到了一些困难。
我将粘贴我操作此代码的代码片段,很快我会解释并提出疑问,如果他们能帮助我会感激不尽。
def classificaTexto(nbc, tweet):
#textoProcessado = preProcessamentoText(tweet)
for features in tweet:
result = nbc.classify(extracaoCaracteristicas(features[0]))
#return result
if (result == 4) :
print 'Crime não categorizado - ' + str(tuple(features))
elif (result == 1):
print 'Roubo - ' + str(tuple(features))
elif(result == 2):
print 'Homicídio - ' + str(tuple(features))
elif(result== 3):
print 'Tráfico - ' + str(tuple(features))
else :
print 'Não representa um crime - ' + str(tuple(features))
# Main function
if __name__ == '__main__':
#Load the files with text - Both are csv
carregarTextos()
test_set()
# Extract the feature vector of all tweets in one go
conjuntoTreino = nltk.classify.util.apply_features(extracaoCaracteristicas, tweets)
# Train the classifier
NBClassifier = nltk.NaiveBayesClassifier.train(conjuntoTreino)
classificaTexto(NBClassifier, testset)
现在解释:
在classificaTexto(NBClassifier, testset)
中,testset是我读取其中一个csv文件并将其转换为特征向量的变量。这种转换的结果是一个元组,结果如下:
(['multas', 'caras', 'partir', 'multas', 'caras', 'partir', 'novembro', 'novos', 'previstos', 'partir', 'cujo', 'valor', 'multa', 'atual', 'multas', 'serem', 'pagas', 'grave', 'atuais', 'multas', 'cobradas', 'consideradas', 'leves', 'reajustadas', 'atuais', 'partir', 'novembro', 'reajustados', 'valores', 'multas', 'aplicadas', 'motoristassuspeitos', 'dirigir', 'recusarem', 'teste', 'nesse', 'multa', 'motorista', 'suspensa', 'prazo', 'brasil'], '5')
不久之后,执行方法classificaTexto
。正如你在上面看到的那样,我阅读了元组然后进行打印,其中我有一个文本(str)和元组。这里的目的是说一种与元组中包含的文本相关的感觉。但结果如下:
Não representa um crime - (['multas', 'caras', 'partir', 'multas', 'caras', 'partir', 'novembro', 'novos', 'previstos', 'partir', 'cujo', 'valor', 'multa', 'atual', 'multas', 'serem', 'pagas', 'grave', 'atuais', 'multas', 'cobradas', 'consideradas', 'leves', 'reajustadas', 'atuais', 'partir', 'novembro', 'reajustados', 'valores', 'multas', 'aplicadas', 'motoristassuspeitos', 'dirigir', 'recusarem', 'teste', 'nesse', 'multa', 'motorista', 'suspensa', 'prazo', 'brasil'], '5')
我的疑问和怀疑如下:
1 - 下面这个是与元组交互的最佳方式吗?
for features in tweet:
result = nbc.classify(extracaoCaracteristicas(features[0]))
2 - 我用来连接str类型和元组的形式是否正确? print 'Tráfico - ' + str(tuple(features)
答案 0 :(得分:1)
关于点n°2:
不,你连接的方式不是你应该获得你期望的方式。
这应该工作:
print 'Trafico - ' + ', '.join(features[0])