标签: text-classification

如何在SVM中编码不同大小的特征向量

我致力于分类一些评论(段落)由多个句子组成.我通过libSVM在Weka中使用词袋功能对它们进行了分类.但是,我有另一个想法,我不知道如何实现:

我认为在评论中为每个句子创建基于语法和浅层语义的特征是值得尝试的.但是,由于段落的句子大小不同,我找不到任何顺序编码这些功能的方法.我想将这些特征保持在一个顺序中的原因是句子特征的顺序可以为分类提供更好的线索.例如,如果我有两个实例P1(有3个句子)和P2(2个句子),我会有一个这样的空格(假设每个句子有一个二进制特征作为a或b):

P1 - > abb/classX P2 - > ba/classY

所以,我的问题是我是否可以在特征空间中实现不同特征尺寸的分类?如果是的话,我可以在Weka,scikit-learn或Mallet中使用任何类型的分类器吗?我将不胜感激任何回应.

谢谢

machine-learning weka scikit-learn text-classification

0
推荐指数
1
解决办法
1835
查看次数

如何使用sklearn库对朴素贝叶斯进行文本分类?

我正在尝试使用朴素贝叶斯文本分类器进行文本分类.我的数据采用以下格式,根据问题和摘录,我必须决定问题的主题.培训数据有超过20K的记录.我知道SVM会是一个更好的选择,但我想使用sklearn库Naive Bayes一起使用.

{[{"topic":"electronics","question":"What is the effective differencial effective of this circuit","excerpt":"I'm trying to work out, in general terms, the effective capacitance of this circuit (see diagram: http://i.stack.imgur.com/BS85b.png).  \n\nWhat is the effective capacitance of this circuit and will the ...\r\n        "},
{"topic":"electronics","question":"Outlet Installation--more wires than my new outlet can use [on hold]","excerpt":"I am replacing a wall outlet with a Cooper Wiring USB outlet (TR7745).  The new outlet has 3 wires coming out of it--a black, a white, …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn text-classification naivebayes

0
推荐指数
1
解决办法
2215
查看次数

通常,TF-IDF何时会降低准确性?

我正在使用朴素贝叶斯模型将包含200000条评论的语料库分为正面评论和负面评论,并且我注意到执行TF-IDF实际上会使准确性(在对50000条评论的测试集进行测试时)降低了约2%。因此,我想知道TF-IDF是否对使用的数据或模型有任何潜在的假设,即是否存在因使用它而降低准确性的情况?

tf-idf sentiment-analysis text-classification naivebayes

0
推荐指数
1
解决办法
1769
查看次数

python sklearn pipiline fit:“AttributeError:找不到更低的”

我正在尝试使用 sklearn 将 sveveral 文本数据分为 3 个类别。但我得到

“属性错误:未找到下限”

跑步时。

代码:

train, test = train_test_split(df, random_state=42, test_size=0.3, shuffle=True)
X_train = train.contents
X_test = test.contents
Y_train = train.category
Y_test = test.category

clf_svc = Pipeline([('vect', CountVectorizer()),
                    ('tfidf', TfidfVectorizer(tokenizer=',', use_idf=True, stop_words="english")),
                    ('clf', OneVsRestClassifier(LinearSVC(), n_jobs=1)),
                    ])

clf_svc = clf_svc.fit(X_train, Y_train)
predicted_svc = clf_svc(X_test)
print(np.mean(predicted_svc == Y_test))
Run Code Online (Sandbox Code Playgroud)

数据框 (df) 由 2 列组成:内容(长文本数据)和类别(文本数据)。内容是抓取的文本,因此包含数十或数百个单词,类别是单个单词,例如“A”,“B”。

我已经在 stackoverflow 中检查了过去的问题,但我无法解决发生的这个错误。
我很高兴知道解决方案或代码本身的问题。
任何建议和答案将不胜感激。

提前致谢。

python machine-learning svm scikit-learn text-classification

0
推荐指数
1
解决办法
4332
查看次数

使用一个完全受过培训的文件分类,另一个完全受过测试的文件分类

我正在尝试进行分类,其中一个文件完全是培训,另一个文件完全是测试。这是可能的?我试过了:

import pandas
import numpy as np
import pandas as pd
from sklearn import metrics
from sklearn import cross_validation
from sklearn.pipeline import Pipeline
from sklearn.metrics import confusion_matrix
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import train_test_split
from sklearn.metrics import precision_recall_fscore_support as score
from sklearn.feature_extraction.text import TfidfVectorizer, HashingVectorizer, CountVectorizer, TfidfTransformer
from sklearn.metrics import precision_score, recall_score, confusion_matrix, classification_report, accuracy_score, f1_score

#csv file from train
df = pd.read_csv('data_train.csv', sep = ',')

#csv file from test
df_test = pd.read_csv('data_test.csv', sep = …
Run Code Online (Sandbox Code Playgroud)

python machine-learning python-3.x scikit-learn text-classification

0
推荐指数
1
解决办法
282
查看次数

如何将文档分为训练集和测试集?

我正在尝试建立分类模型。我在本地文件夹中有1000个文本文档。我想将它们分为训练集和测试集,拆分比例为70:30(70->训练和30->测试),有什么更好的方法呢?我正在使用python。

注意:-为了更好的理解,请提供为什么应遵循该方法的解释。

谢谢

更新:-在对这个问题进行了几次投票之后。尽管我得到了接近完美的答案,但我还是想简单地介绍一下问题。

我希望以编程方式将训练集和测试集分开。首先读取本地目录中的文件。其次,构建这些文件的列表并对其进行随机排序。第三,将它们分为训练集和测试集。

作为python的初学者和新手,我尝试了几种使用内置python关键字和函数的方法,但都失败了。最后,我有了接近它的想法。同样,交叉验证是构建建筑物一般分类模型时要考虑的一个很好的选择。感谢您的回答。

machine-learning scikit-learn text-classification

-1
推荐指数
1
解决办法
6978
查看次数

NameError:名称“ fit_classifier”未定义

我正在尝试使文本分类

import pandas as pd
import pandas
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.multiclass import OneVsOneClassifier
from sklearn.svm import SVC
from sklearn import cross_validation
from sklearn.metrics import confusion_matrix

dataset = pd.read_csv('data.csv', encoding = 'utf-8')
data = dataset['text']
labels = dataset['label']

X_train, X_test, y_train, y_test = train_test_split (data, labels, test_size = 0.2, random_state = 0)

count_vector = CountVectorizer()
tfidf = TfidfTransformer() …
Run Code Online (Sandbox Code Playgroud)

python classification python-3.x scikit-learn text-classification

-2
推荐指数
1
解决办法
1403
查看次数

分析成人内容识别文本的正确方法是什么?

我想过滤掉推文中的成人内容(或任何文本).

对于垃圾邮件检测,我们有数据集可以检查特定文本是垃圾邮件还是火腿.

对于成人内容,我找到了我想要使用的数据集(下面提取):

arrBad = [
'acrotomophilia',
'anal',
'anilingus',
'anus',
.
. etc.
.
'zoophilia']
Run Code Online (Sandbox Code Playgroud)

如何使用该数据集过滤文本实例?

python text-analysis nltk text-classification

-3
推荐指数
1
解决办法
1246
查看次数

如何使用神经模型从消息中检测源和目的地

我想从给定的文本中提取原点和目的地.

例如,

I am travelling from London to New York.
I am flying to Sydney from Singapore.
Run Code Online (Sandbox Code Playgroud)

起源 - >伦敦,新加坡.目的地 - >悉尼,纽约.

NER只提供位置名称,但无法获取原点和目的地.

是否可以训练神经模型来检测它?

我试过训练神经网络来对文本进行分类,比如

{"tag": "Origin",
     "patterns": ["Flying from ", "Travelling from ", "My source is", ]
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我们可以将文本分类为原点,但我也需要获取值(在这种情况下,伦敦,新加坡).

反正我们能做到吗?

python nlp neural-network text-classification ner

-5
推荐指数
1
解决办法
226
查看次数