如何对未知属性的新句子进行分类?

How to classify new sentences with unknown attributes?

我正在尝试使用机器学习算法将 30000 个未标记的句子分类为 2 个标签(例如,pos 和 neg)。为此,我选择了 100 个正面句子和 100 个负面句子作为训练集。然后,我使用 SVM 对 200 个选定的句子进行训练,以创建经过训练的模型。最后用训练好的模型对剩下的29800个未标注的句子进行分类。

但是,我相信当训练模型对剩余的 29800 个未标记句子进行分类时,一定有一些未知词没有被我创建的模型训练。可能有句子不包含任何训练过的单词,如何分类。以下代码使用scikit对句子进行了分类

import numpy as np
import data
from sklearn import metrics
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline

data = data.Data()

allSent = data.getPosSent() + data.getNegSent()
stopWords = data.getStopwords()

Dataset_X = []
Dataset_Y = []

for meta, label in allSent:
   Dataset_X.append(meta)
   Dataset_Y.append(label)
X_train = np.array(Dataset_X)
Y_train = np.array(Dataset_Y)

classifier_SVC = Pipeline([
   ('vectorizer', CountVectorizer()),
   ('classifier', SVC(kernel='rbf', C=10000000, gamma=1e-08))
   ])
classifier_SVC.fit(X_train, Y_train)

predSent = data.getPredSent()
predSentData = []
for i in range(len(predSent)):
   predSentData.append(predSent[i])
pred = np.array(predSentData)

for i in range(len(predSent)):
  print classifier_SVC.predict(pred)[i]

总之,我的问题是

1) 让我们考虑 y_i, x_i, c_iy, x 和第 i 的权重支持向量,分别。对于给定的输入 z,我们计算 predict = sgn(sum(c_i*y_i*K(x_i,z))+b),其中 b 是偏差,K 是核(代码中的 rbf 核)。如果 z 是一个全新的句子,我们得到 predict = sgn(sum(c_i*y_i*exp(-gamma*x_i**2))*exp(-gamma*z**2)+b)

2) 这取决于你的数据。你检查一下有多少句子覆盖了多少百分比的单词怎么样?或者如果你有超过 200 个标记数据,你如何评估训练句子的数量和预测分数之间的关系?