小编nou*_*nia的帖子

在nltk中使用scikit-learn分类器,多类情况

文本文档的分类是scikit-learn的一个简单任务,但是在NLTK中没有一个干净的支持,也有样本用这样的方式做到这一点.我想用NLTK进行预处理并使用sckit-learn进行分类,我在NLTK中找到了SklearnClassifier,但是有一点问题.

在scikit中学习一切都很好:

from sklearn.naive_bayes import MultinomialNB
from sklearn.multiclass import OneVsRestClassifier

X_train = [[0, 0], [0, 1], [1, 1]]
y_train = [('first',), ('second',), ('first', 'second')]

clf = OneVsRestClassifier(MultinomialNB())
clf.fit(X_train, y_train)
print clf.classes_
Run Code Online (Sandbox Code Playgroud)

结果是['first' 'second'],这是我的期望.但是当我尝试在NLTK中使用相同的代码时:

from nltk.classify import SklearnClassifier

X_train = [{'a': 1}, {'b': 1}, {'c': 1}]
y_train = [('first',), ('second',), ('first', 'second')]
clf = SklearnClassifier(OneVsRestClassifier(MultinomialNB()))
clf.train(zip(X_train, y_train))
print clf.labels()
Run Code Online (Sandbox Code Playgroud)

结果是[('first',), ('second',), ('first', 'second')],它不是正确的.有什么解决方案吗?

python nltk scikit-learn

6
推荐指数
1
解决办法
2849
查看次数

查找标记化句子的确切位置

我想提取文本的句子,但是我需要结果的确切位置。当前tokenize.sent_tokenize在NLTK中的实现不会返回提取句子的位置,因此我尝试了以下操作:

offset, length = 0, 0
for sentence in tokenize.sent_tokenize(text):
    length = len(sentence)
    yield sentence, offset, length
    offset += length
Run Code Online (Sandbox Code Playgroud)

但是它不会返回句子的确切位置,因为sent_tokenize会在结果句子边界之外删除一些书写字符(例如,换行符,多余的空格和...)。我不想使用简单的正则表达式模式来拆分句子,我知道在这种情况下,这个问题很小。

谢谢。

python tokenize nltk

4
推荐指数
1
解决办法
1966
查看次数

标签 统计

nltk ×2

python ×2

scikit-learn ×1

tokenize ×1