2017-04-26 2 views
1

J'utilise la classe pyspark.ml.feature.StopWordsRemover sur ma base de données pyspark. Il a une colonne ID et texte. En plus de la liste de mots d'arrêt par défaut fournie, je voudrais ajouter ma propre liste personnalisée pour supprimer toutes les valeurs numériques de la chaîne.Comment ajouter une liste de mots d'arrêt personnalisés à StopWordsRemover

Je peux voir qu'il existe une méthode pour ajouter setStopWords pour cette classe. Je pense que je me bats avec la syntaxe appropriée pour utiliser cette méthode.

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

a = StopWordsRemover(inputCol="words", outputCol="filtered") 
b = a.transform(df) 

Le code ci-dessus me donne les résultats attendus dans la colonne filtrée mais il supprime/arrête uniquement les mots standard. Je cherche une méthode pour ajouter ma propre liste personnalisée qui aurait plus de mots et de valeurs numériques que je souhaite filtrer.

Répondre

3

Vous pouvez spécifier avec ceci:

stopwordList = ["word1","word2","word3"] 

StopWordsRemover(inputCol="words", outputCol="filtered" ,stopWords=stopwordList) 
+0

merci @ML_TN – user2763088

+0

L'ajout de cette note sur la façon d'ajouter toutes les valeurs numériques à StopWrodList: num_list = plage (0,99999) stopwordList = map (str , num_list) – user2763088

+0

Je ne pense pas qu'il soit judicieux d'utiliser une telle liste car pour chaque jeton, il doit parcourir tous les éléments de la liste et la comparer avec le jeton. Je suggère d'utiliser regex comme '' 're.sub (r"/d + "," ", texte)' ''. c'est beaucoup plus efficace –