Zliczanie wystąpień wyrazów

Zliczanie wystąpień wyrazów
K1
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 5 lat
  • Postów:25
0

Cześć, ma tabelę składającą się z trzech kolumn: w pierwszej w każdym z wierszy znajduje się tekst, dwie kolejne są puste (etykiety pos i neg). Do tego mam dwie listy składające się z listy danych słów. Chciałbym dla każdego z wierszy policzyć liczbę wystąpień słów z dwóch list i zapisać wyniki w dwóch kolumnach (pos i neg).
Domyślam się, że trzeba przejść przez każdy z wierszy za pomocą iteratora i używając funkcji if sprawdzić występowanie słowa na liście. Zastanawiam się tylko, czy tekst w wierszu należy poddać tokenizacji. I druga kwestia, nie bardzo wiem w jaki sposób zapisać wynik w dodatkowej kolumnie.
Będę wdzięczny za pomoc

enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:2 dni
  • Postów:1027
0

Hmm, my tym bardziej nie wiemy w jaki sposób masz zapisać dane w drugiej kolumnie. Co to w ogóle za zadanie?

MJ
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:34
0

Co do zliczania o ile dobrze rozumiem to mozna to zrobic uzywajac metody split() na stringu z tekstem i wykozystac to np w funkcji filter z yzyciem funkcji lambda

Guaz
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Częstochowa
  • Postów:221
0

Najszybsze liczenie wyrazów (zakładając że są już rozdzielne) w pythonie, zrobisz za pomocą słowników:

Kopiuj
slownik = {}
for wyraz in twoje_wyrazy:
    slownik[wyraz] = slownik.get(wyraz, 0)+1

Ale z takiej opisówki niewiele wyniesiemy, wrzuć jakąś swoją próbę poskładania tego kodu, z czego bierzesz dane itd.
Oraz najważniejsze, jak wygląda ta tabela o której mowa. Nikt tu nie będzie czarował z fusów jak coś rozwiązać bez konkretnej informacji ;d


Linux Mint
Arduino / Python 3.5.2
K1
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 5 lat
  • Postów:25
0
enedil napisał(a):

Hmm, my tym bardziej nie wiemy w jaki sposób masz zapisać dane w drugiej kolumnie. Co to w ogóle za zadanie?

Załóżmy, że w pierwszym wierszu mam następujące zdanie: "RPP rozczarowała inwestorów liczących na złagodzenie jej retoryki". Teraz chciałbym sprawdzić, czy któreś ze słów znajduje w zbiorze słów we wspomnianych listach. Jeśli np. słowa "rozczarowała" i "retoryki" znajdują się na pierwszej liście, to w kolumnie "pos" powinno pojawić się 2. Jeśli z kolei żadne ze słów nie znajduje się na drugiej liście, to w kolumnie "neg" powinno pojawić się 0.

Mam nadzieję, że trochę rozjaśniłem.

CorvusEtiam
czy słowa w listach i te występujące w wierszach są identyczne, czy różnią się odmianą i tak dalej. Jak są identyczne to prawdopodobnie wystarczy coś w stylu len(list(word for word in words if word in line)) dla sprawdzenia, czy dane słowa są obecne, reszta to prosty if, jeśli się różnią potrzebujesz jakieś biblioteki do NLP najlepiej ( NLTK albo podobnej), bo samemu raczej kiepsko.
OW
  • Rejestracja:5 miesięcy
  • Ostatnio:5 miesięcy
  • Postów:1
0

liczba znakow w lancuchu, liczba wyrazow w lancuchu i czy w lancuchu są cyfry)
def zbierz_informacje():
while True:
# Wprowadzenie tekstu przez użytkownika
wprowadzenie = input("Podaj tekst (wpisz 'koniec', aby zakończyć): ")

    # Sprawdzenie, czy użytkownik chce zakończyć
    if wprowadzenie.lower() == 'koniec':
        break
    
    # Obliczanie liczby znaków
    licznik_znakow = len(wprowadzenie)
    
    # Obliczanie liczby wyrazów
    liczba_wyrazow = len(wprowadzenie.split())
    
    # Sprawdzanie, czy w tekście są cyfry
    czy_cyfry = any(ch.isdigit() for ch in wprowadzenie)
    
    # Wyświetlenie wyników
    print(f"Liczba znaków: {licznik_znakow}")
    print(f"Liczba wyrazów: {liczba_wyrazow}")
    print(f"Czy tekst zawiera cyfry? {'Tak' if czy_cyfry else 'Nie'}")
    print()  # Pusta linia dla lepszej czytelności

Uruchomienie programu

if name == "main":
zbierz_informacje()

lion137
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Postów:4946
0

@kamil1907

czy tekst w wierszu należy poddać tokenizacji

Jeśli się nad tym zastanawiasz to źle, musisz miec jakąś strategię jak przygotować oba teksty.


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.