Анализ текста: плохие прогнозы токсичных комментариев с помощью Word2Vec - PullRequest
0 голосов
/ 24 мая 2018

У меня есть набор данных, содержащий предложения и логические столбцы (0 или 1), чтобы классифицировать тип комментария (токсичный | суровый_отоксичный | непристойный | угроза | оскорбление | личность_hate).Вы можете скачать набор данных здесь: https://ufile.io/nqns7

Я отфильтровал слова со степенью простоты, чтобы сохранить только полезные слова, я сохранил: прилагательные, наречия, глаголы и существительные, используя эту функцию:

def filter_words(words) : 
vec = []    
conditions = ('ADV','NOUN','ADJ','VERB')
for token in nlp(words):
    if not token.is_stop and token.pos_ in conditions:
        vec.append(token.lemma_)
return vec

Затем я преобразовал dataframe в файл паркета, чтобы ускорить выступления.

В итоге я получил фрейм данных, который выглядит следующим образом: enter image description here

Я использовал Word2Vec на этом DF, чтобы создать столбец функций, чтобы использовать RandomForestClassifier дляпредсказать, хорошо ли работает модель.

Вот код:

    from pyspark.ml.feature import Word2Vec
    from pyspark.sql.functions import *

    word2vec = Word2Vec(inputCol="vector_words",outputCol="features")
    model = word2vec.fit(sentences)
    result = model.transform(sentences)
    result = result.withColumn("toxic", result["toxic"].cast(IntegerType()))

      rf =RandomForestClassifier(labelCol="toxic",featuresCol="features")

      result = result.dropna()
      (trainingSet, testSet) = result.randomSplit([0.7,0.3])

      model_toxic = rf.fit(trainingSet)
      predictions = model_toxic.transform(testSet)

Но проблема, с которой я здесь столкнулся, заключается в том, что у меня есть только 16 прогнозов, которые считаются токсичными, из которых 13 действительно идентифицированы как токсичные, в то время как существует около4000 ядовитых комментариев в наборе.Я не понимаю почему.Это из-за фильтра, который я применил к словам, который может быть слишком ограничительным (хотя я не знаю почему), или это потому, что параметры моих Word2Vec и RandomForestClassifier не достаточно точны?Я новичок в pyspark и не смог найти никакой информации о плохих моделях, в основном люди в интернете очень довольны результатами.Любая помощь будет оценена.

...