Как собрать свои тренировочные данные в моем случае, чтобы обучить SVM по классификатору в scikit-learn? - PullRequest
0 голосов
/ 15 июня 2019

У меня есть предложения, пришедшие из научных исследований, и там вручную извлечены словосочетания, которые являются ключевыми словами предложений, которые я хочу получить. Теперь, чтобы построить данные поезда для классификатора SVM, я хотел бы векторизовать предложения вместе с каждым ключевым словом. Смотреть код

Я думал о словаре и применении DictVectorizer из библиотеки sklearn.

Code:

sklearn.feature_extraction import DictVectorizer

v = DictVectorizer()

D = [{"sentence":"the laboratory information system was evaluated", 
       "keyword":"laboratory information system"},
     {"sentence":"the electronic health record system was evaluated", 
      "keyword":"electronic health record system"}]

X = v.fit_transform(D)

print(X)

content = X.toarray()

print(content)

print(v.get_feature_names())

Results:

 (0, 1) 1.0
  (0, 3)    1.0
  (1, 0)    1.0
  (1, 2)    1.0

[[0. 1. 0. 1.]
 [1. 0. 1. 0.]]

['keyword=electronic health record system', 'keyword=laboratory information system', 'sentence=the electronic health record system was evaluated', 'sentence=the laboratory information system was evaluated']

Правильно ли это методологически или как я могу объединить каждое предложение с соответствующим вручную извлеченным ключевым словом для векторизации, чтобы раскрыть данные обучения. Большое спасибо.

1 Ответ

0 голосов
/ 17 июня 2019

Я думаю, что это не идеально, если вы используете целое предложение как функцию. Это станет проблематичным для большого набора данных.

Например,

D = [{"sentence":"This is sentence one", 
       "keyword":"key 1"},
     {"sentence":"This is sentence one", 
       "keyword":"key 2"},
     {"sentence":"This is sentence one", 
       "keyword":"key 3"},
     {"sentence":"This is sentence one", 
       "keyword":"key 2"},
     {"sentence":"This is sentence one", 
       "keyword":"key 1"}]

X будет

[[1. 0. 0. 0. 0. 1. 0. 0.]
 [0. 1. 0. 0. 0. 0. 0. 1.]
 [0. 0. 1. 0. 0. 0. 1. 0.]
 [0. 1. 0. 0. 1. 0. 0. 0.]
 [1. 0. 0. 1. 0. 0. 0. 0.]]

Возможно, вы могли бы просто применить TfidfVectorizer из scikit-learn, который, вероятно, подберет важные слова в предложении.

Код:

from sklearn.feature_extraction.text import TfidfVectorizer


sentences = [d['sentence'] for d in D]

vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(sentences)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...