Próbuję uzyskać liczbę dodatnich i ujemnych w bardzo dużym pliku. Potrzebuję tylko prymitywnego podejścia (które nie trwa wieki). Próbowałem sentiwordnet, ale wciąż otrzymuję IndexError: list index out of range, co myślę, że jest to spowodowane słowami, które nie są wymienione w słowniku wordnet. Tekst zawiera dużo literówek i „nie-słów”.

Gdyby ktoś mógł coś zasugerować, byłbym bardzo wdzięczny!

0
Older Than Yoda 1 listopad 2018, 16:45

1 odpowiedź

Najlepsza odpowiedź

Wszystko zależy od tego, jakie są Twoje dane i jaki jest ostateczny cel Twojego zadania. Musisz podać nam nieco bardziej szczegółowy opis swojego projektu, ale ogólnie masz opcje: - Stwórz własny słownik analizy nastrojów: naprawdę wątpię, czy chcesz to zrobić, ponieważ zajmuje to dużo czasu i wysiłku, ale jeśli Twoje dane są wystarczająco proste, jest to wykonalne. - Wyczyść swoje dane: jeśli Twoje tokeny nie znajdują się w senti-wordnet, ponieważ jest za dużo szumu i źle napisane słowa, spróbuj je poprawić przed przekazaniem ich przez wordnet, co najmniej ograniczy liczbę błędów, które otrzymasz. - Użyj alternatywy senti-wordnet: zgadza się, nie ma zbyt wielu dobrych, ale zawsze możesz spróbować sentiment_classifier< /a> lub opinii nltk, jeśli używasz Pythona (który przez wygląda na twój błąd wygląda na to, że jesteś). - Klasyfikuj tylko to, co możesz: to polecam. Jeśli słowa nie ma w senti-wordnet, przejdź do następnego. Po prostu złap błąd (try: ... except IndexError: pass) i spróbuj wywnioskować, jaki jest ogólny sentyment danych, licząc słowa sentymentu, które faktycznie wyłapałeś.

PS: Aby mieć pewność, musielibyśmy zobaczyć Twój kod, ale myślę, że jest jeszcze jeden powód, dla którego otrzymujesz błąd IndexError. Jeśli słowo nie było w senti-wordnet, otrzymasz KeyError, ale zależy to również od tego, jak zakodowałeś swoją funkcję.

Powodzenia i mam nadzieję, że pomogło.

1
dahrs 1 listopad 2018, 19:25