0
votes

Pourquoi le nombre de tiges de NLTK STEMMER SORTIS est-il différent de la production attendue?

Je dois effectuer la tige sur un texte. Les questions sont les suivantes:

  1. Tokenize tous les mots donnés dans tc . Le mot doit contenir des alphabets ou des chiffres ou un soulignement. Stockez la liste des mots jetonisés dans TW
  2. Convertissez tous les mots en minuscules. Stocker le résultat dans la variable tw
  3. Supprimez tous les mots d'arrêt de l'ensemble unique de tw . Stocker le résultat dans la variable fw
  4. tige chaque mot présent dans fw avec PORTERSTEMMER et stockez le résultat dans la liste PSW

    ci-dessous est mon code: xxx

    Mon code fonctionne parfaitement avec toutes les tests fournis dans la main, mais il échoue uniquement pour le cas de test ci-dessous où

    tc = "Je suis allé par inadvertance à Candy's Candy la semaine dernière (j'étais dans le centre commercial à la recherche de réparation téléphonique), et comme il s'avère, Vee Candy prononce maintenant un dollar - un dollar complet - pour même le plus simple de leurs belles offres de confection. J'ai acheté deux sucettes au chocolat et deux choses au chocolat-caramel-amand. Le coût total était de quatre-quelque chose. Je veux dire, les bonbons étaient savoureux et tout, mais soyons réels: une barre de snickers est une cinquantaine de cents. Après Cette révélation en dollars par bonbons, je ne me retrouve peut-être pas à nous promener rêveusement dans les bonbons de Report à tout moment. "

    Ma sortie est la suivante:

    ['Almond', 'Back', 'Bar', 'Acheté', 'Candi', 'Candi' , 'Caramel', 'Cent', 'Chocol', 'Chocol' , "Confect", "Coût", "Dreamar", "Dreamili", "Même", "Fifti", "Trouve", "Four", "plein", "inadvert", "Last", " Lollipop ', "Regard",' Mall ',' May ', "Moyenne", "Offre", "Per", "Téléphone", "Real", "Repair", "Revel", "Simpleest" , 'Snicker', 'Someth', "Bientôt", "Tasti", "Tasti", "Time", "Total", "Turn", "Two", "errer", "Wee", "Semaine", ' est allé ']

    La sortie attendue est la suivante:

    ['Almond', 'Back', 'Bar', 'Acheté', 'Candi', 'Candi', 'Candi', 'Candi' , 'Caramel', 'Cent', 'Cent', 'Charg' , 'Chocol', "Confect", "Coût", "Dollar", "Dreamili", "Même", "Fifti", "Trouve", "Four" "," Plein "," inadvert "," Dernier "," Soit "," Lollipop "," Regard "," Mall "," May "," Me dire "," Offre "," Per ', "Téléphone", "Real", "Repair", "Repair",' See ' , 'Simpleest', 'Snicker', 'Someth', "Bientôt", "Tasti", "Tasti", "Time", "Total", "Turn", "Deux", "erre", 'Wee', ' semaine ',' est allé ']

    La différence est la survenue de 'Candi'

    Aide à la recherche d'aide pour résoudre le problème.


2 commentaires

Quel code a produit la «sortie attendue»? At-il utilisé les mêmes versions de tout ce que vous utilisez?


La sortie attendue reflétée lorsque j'ai exécuté mon code. Je ne peux pas voir le code qui a obtenu la sortie attendue. Oui, je crois que les versions sont identiques. Comme l'évaluation pratique est sur l'IDE Web.


3 Réponses :


-1
votes

Tout d'abord, ne pas itérer à travers le texte plusieurs fois, voir Pourquoi ma fonction NLTK est-elle lente lors du traitement du Dataframe?

Faites cela à la place et que vous ne comprenez que dans vos données / texte une fois: P>

see 3 1
candi 5 3
dollar 3 1
two 2 1
chocol 2 1


0 commentaires

0
votes

Essayez d'utiliser:

import re
import nltk
from nltk import word_tokenize
from nltk.corpus import stopwords
from nltk.stem  import PorterStemmer,LancasterStemmer

pattern = r'\w+';
tw= nltk.regexp_tokenize(tc,pattern);
tw= [word.lower() for word in tw];
unique_tw = set(tw); #Unique Set of Tokenized words(See Your Step3)
stop_word = set(stopwords.words('english'));
fw= [w for w in unique_tw if not w in stop_word];# Remove stopwords from unique_tw
porter = PorterStemmer();
psw = [porter.stem(word) for word in fw];
print(sorted(psw));


0 commentaires

0
votes

C'est à cause du boîtier de titre et de minuscule du mot "Candy"

Je suis allé par inadvertance à Candy's Candy la semaine dernière (j'étais dans le centre commercial à la recherche de réparation téléphonique), et comme il s'avère, voir Candy à la suite d'un dollar - un dollar complet - pour même la plus simple de leur confection de petite confection Offres. J'ai acheté deux sucettes au chocolat et deux choses au chocolat-caramel-almond. Le coût total était quatre-quelque chose. Je veux dire, les bonbons étaient savoureux et tout, mais soyons réels: une barre de snickers est de cinquante cents. Après ce dollar - Candy Apocalypse, je ne me retrouve peut-être pas à errer rêveusement de retourner dans un bonbon de voir à tout moment.


0 commentaires