我是人工智能的新手,想做下面的练习。请您建议使用python实现它的方法:
方案--我有一些公司的业务清单如下:
1. AI
2. Artificial Intelligence
3. VR
4. Virtual reality
5. Mobile application
6. Desktop softwares
并将它们分类如下:
Technology ---> Category
1. AI ---> Category Artificial Intelligence
2. Artificial Intelligence ---> Category Artificial Intelligence
3. VR ---> Category Virtual Reality
4. Virtual reality ---> Category Virtual Reality
5. Mobile application ---> Category Application
6. Desktop softwares ---> Category Application
也就是说,当我收到像 AI 或人工智能这样的文本时,它必须将人工智能和人工智能识别为一体,并将这两个关键字放在人工智能类别中。
我遵循的当前方法是使用查找表,但是,我想使用python对技术/业务应用文本分类,在这里我可以使用python隔离技术,而不是使用查找表。
请给我任何相关的建议。
发布于 2017-10-25 07:52:28
这里有一种使用滑雪板的方法。在过去的情况下,我会使用LabelBinarizer(),但是它不会在管道中工作,因为它不再接受X,y作为输入。
如果您是新手,管道可能有点混乱,但本质上它们只是在传递给分类器之前分步骤处理数据。在这里,我将X
转换为单词和字符标记的ngram“矩阵”(一个表),然后将其传递给分类器。
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.pipeline import Pipeline, FeatureUnion
X = np.array([['AI'],
['Artificial Intelligence'],
['VR'],
['Virtual Reality'],
['Mobile application'],
['Desktop softwares']])
y = np.array(['Artificial Intelligence', 'Artificial Intelligence',
'Virtual Reality', 'Virtual Reality', 'Application', 'Application'])
pipeline = Pipeline(steps=[
('union', FeatureUnion([
('word_vec', CountVectorizer(binary=True, analyzer='word', ngram_range=(1,2))),
('char_vec', CountVectorizer(analyzer='char', ngram_range=(2,5)))
])),
('lreg', LogisticRegression())
])
pipeline.fit(X.ravel(), y)
print(pipeline.predict(['web application', 'web app', 'dog', 'super intelligence']))
预测:
['Application' 'Application' 'Virtual Reality' 'Artificial Intelligence']
https://stackoverflow.com/questions/46924600
复制相似问题