0
votes

Les mots "Supprimords" de R TM ne retirent pas les hashtags twitter des tweets en raison de #

J'essaie de supprimer les hashtags des tweets en utilisant la fonction tm S. / code> Supprimer les mots . Les hashtags commencent par # comme vous le savez, et je veux supprimer ces balises dans leur intégralité. Toutefois, Supprimer les mots ne les supprimez pas: xxx

si je supprimais le # dans les mots argument , la balise est supprimée: xxx

qui quitte l'orphelin # derrière.

Pourquoi cela se produit-il? La fonction ne devrait-elle pas supprimer les mots comme tout simplement, ou je manque quelque chose? manuel n'est pas très utile ici.

r tm

0 commentaires

4 Réponses :


0
votes

Malheureusement, je ne peux pas penser à un grand moyen autour de cela. La raison derrière ce que vous voyez est que les mots supprimés s'appuie sur l'utilisation d'expressions régulières avec des limites de mots. Malheureusement, "#" ne compte pas comme une limite de mot, il est donc ignoré essentiellement. J'espère voir une meilleure réponse avec une bonne solution, mais vous devrez peut-être simplement faire quelque chose de simple comme un passage initial où vous remplacez "#" avec un mot-clé que vous ajoutez à votre liste de choses à supprimer à la place du symbole et d'utilisation ce mot clé à la place du hashtag lors de la création de votre liste de mots à supprimer.


6 commentaires

Ou peut-être une passe ultérieure sur les textes pour supprimer tous les orphelins # (Imaginez-vous si vous avez 10M Tweets). J'espère également une manière plus élégante et efficace, idéalement avec une passe sur les données pour supprimer m hashtags de n tweets. Merci!


Re-lisant mon message J'espère que je n'ai pas donné la mauvaise impression. Je pense que vous pouvez très facilement faire cela directement à l'aide de quelque chose comme gsub combiné avec labraque ou quelque chose. Le problème principal est que je ne pense pas que vous puissiez faire ce que vous voulez faire directement à l'aide de la fonction Supprimer des mots en raison de la codée et de la façon dont les expressions régulières définissent les limites de mots.


Cela nécessitera plusieurs passes également @dason. Je pense à une méthode pour faire le remplacement en un seul passage, mais je ne suis pas sûr qu'il soit facilement accessible


J'ai mis à jour et undrotted ma réponse. Je pense que cela devrait retirer tous les hashtags d'une chaîne en une seule passe et peut être adapté avec SAPPLY, etc. à plusieurs cordes


Déduire des autres réponses Il apparaît qu'il n'y a aucun moyen de y parvenir avec TM efficacement. Comme cette réponse a abordé la question directement, je l'accepte. @Julian_hn En passant, il y a un algorithme impressionnant appelé flashtext , qui est extrêmement efficace et peut remplacer tous les mots-clés d'un morceau de textes en une seule passe. Il est implémenté dans python mais je ne l'ai pas trouvé dans r , donc je recours à d'autres options et à des solutions rééditées.


Si vous êtes libre d'appeler le code Python sur votre configuration, vous pouvez consulter réticuler pour appeler la fonction Python



0
votes

n'utilise pas l'emballage TM mais stringr : xxx

Ceci supprime tous les hashtags correspondants spécifiés dans des balises à partir d'une seule chaîne. Pour l'appliquer à plusieurs chaînes, utilisez simplement sapply etc.


0 commentaires

1
votes

Vous pouvez utiliser des fonctions à partir du package TextClean pour vous aider à vous aider. XXX PRE>

Pour incorporer cette TM intérieure, utilisez TM_MAP pour appeler ces fonctions P>

...
# after creating corpus
my_corpus <- tm_map(my_corpus, content_transformer(replace_hash))
my_corpus <- tm_map(my_corpus, content_transformer(replace_url))
....
# rest of code


3 commentaires

Cela ne supprimera-t-il pas tous les hashtags? Je pense qu'il ne veut que des hashtags spécifiques remplacés?


@Julian_hn, Yep, cela supprimerait tous les hastags (ou les remplacerait avec quelque chose). Tout dépend de ce que vous voulez exactement réaliser avec une analyse texmique / sentiment. Cela n'est pas clair de la question de l'OP. J'ai tendance à retirer les hatus et à les remplacer par quelque chose d'autre lors de la textographie, mais de les supprimer (dans la plupart des cas) pour une analyse du sentiment.


Le paquet est soigné, je l'ai essayé et ça marche. Depuis que j'ai des métadonnées environnantes, j'ai utilisé vcorpus (DataFramesource (DataFramesource (DataFramesource) . Cependant, comme indiqué par @julian_hn, il est exhaustif et il supprime tous les mots commençant par # .



0
votes

Quelle belle question! C'est un peu délicat: lorsque vous regardez le code source de TM :: Supprimer les mots-mots () , vous verrez ce qu'il fait: xxx

Ça fonctionne Avec les limites de mots comme mention @dason, c'est pourquoi il est si compliqué d'extraire des hashtags. Mais vous pouvez l'utiliser comme une inspiration pour construire votre propre fonction: xxx

créé sur 2020-07-17 par le package Reprex (v0.3.0)

C'est assez rapide et fonctionne comme prévu, et vous pouvez en outre l'ajuster à vos propres besoins.


0 commentaires