Zliczenie ilości występowania danego słowa z pliku .txt

Odpowiedz Nowy wątek
2019-03-04 14:24
0

Witam :)
Rozwijam umiejętności programistyczne w Pythonie i siedzę z problemem od wczoraj, wieczór.

Utworzyłem sobie 7 dokumentów z pewnymi różnymi artykułami z sieci.

Mając 7 słów kluczowych:
"gitar"
"budow"
"podstrunnic"
"muzyk"
"strun"
"korp"
"drewn"

Zczytuję te słowa na tej zasadzie:

# -*- coding: utf-8 -*-

def dokument1():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part11 in line.split():
                if "gitar" in part11:
                    print ("dokument 1: "), part11
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part12 in line.split():
                if "budow" in part12:
                    print ("dokument 1: "), part12
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part13 in line.split():
                if "podstrunnic" in part13:
                    print ("dokument 1: "), part13
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part14 in line.split():
                if "muzyk" in part14:
                    print ("dokument 1: "), part14
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part15 in line.split():
                if "strun" in part15:
                    print ("dokument 1: "), part15
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part16 in line.split():
                if "korp" in part16:
                    print ("dokument 1: "), part16
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt') as openfile:
        for line in openfile:
            for part17 in line.split():
                if "drewn" in part17:
                    print ("dokument 1: "), part17
        print ('\n')

def dokument2():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part21 in line.split():
                if "gitar" in part21:
                    print ("dokument 2: "), part21
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part22 in line.split():
                if "budow" in part22:
                    print ("dokument 2: "), part22
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part23 in line.split():
                if "podstrunnic" in part23:
                    print ("dokument 2: "), part23
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part24 in line.split():
                if "muzyk" in part24:
                    print ("dokument 2: "), part24
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part25 in line.split():
                if "strun" in part25:
                    print ("dokument 2: "), part25
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part26 in line.split():
                if "korp" in part26:
                    print ("dokument 2: "), part26
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art2.txt') as openfile:
        for line in openfile:
            for part27 in line.split():
                if "drewn" in part27:
                    print ("dokument 2: "), part27
        print ('\n')

def dokument3():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part31 in line.split():
                if "gitar" in part31:
                    print ("dokument 3: "), part31
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part32 in line.split():
                if "budow" in part32:
                    print ("dokument 3: "), part32
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part33 in line.split():
                if "podstrunnic" in part33:
                    print ("dokument 3: "), part33
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part34 in line.split():
                if "muzyk" in part34:
                    print ("dokument 3: "), part34
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part35 in line.split():
                if "strun" in part35:
                    print ("dokument 3: "), part35
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part36 in line.split():
                if "korp" in part36:
                    print ("dokument 3: "), part36
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art3.txt') as openfile:
        for line in openfile:
            for part37 in line.split():
                if "drewn" in part37:
                    print ("dokument 3: "), part37
        print ('\n')

def dokument4():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part41 in line.split():
                if "gitar" in part41:
                    print ("dokument 4: "), part41
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part42 in line.split():
                if "budow" in part42:
                    print ("dokument 4: "), part42
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part43 in line.split():
                if "podstrunnic" in part43:
                    print ("dokument 4: "), part43
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part44 in line.split():
                if "muzyk" in part44:
                    print ("dokument 4: "), part44
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part45 in line.split():
                if "strun" in part45:
                    print ("dokument 4: "), part45
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part46 in line.split():
                if "korp" in part46:
                    print ("dokument 4: "), part46
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art4.txt') as openfile:
        for line in openfile:
            for part47 in line.split():
                if "drewn" in part47:
                    print ("dokument 4: "), part47
        print ('\n')

def dokument5():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part51 in line.split():
                if "gitar" in part51:
                    print ("dokument 5: "), part51
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part52 in line.split():
                if "budow" in part52:
                    print ("dokument 5: "), part52
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part53 in line.split():
                if "podstrunnic" in part53:
                    print ("dokument 5: "), part53
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part54 in line.split():
                if "muzyk" in part54:
                    print ("dokument 5: "), part54
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part55 in line.split():
                if "strun" in part55:
                    print ("dokument 5: "), part55
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part56 in line.split():
                if "korp" in part56:
                    print ("dokument 5: "), part56
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art5.txt') as openfile:
        for line in openfile:
            for part57 in line.split():
                if "drewn" in part57:
                    print ("dokument 5: "), part57
        print ('\n')

def dokument6():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part61 in line.split():
                if "gitar" in part61:
                    print ("dokument 6: "), part61
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part62 in line.split():
                if "budow" in part62:
                    print ("dokument 6: "), part62
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part63 in line.split():
                if "podstrunnic" in part63:
                    print ("dokument 6: "), part63
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part64 in line.split():
                if "muzyk" in part64:
                    print ("dokument 6: "), part64
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part65 in line.split():
                if "strun" in part65:
                    print ("dokument 6: "), part65
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part66 in line.split():
                if "korp" in part66:
                    print ("dokument 6: "), part66
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art6.txt') as openfile:
        for line in openfile:
            for part67 in line.split():
                if "drewn" in part67:
                    print ("dokument 6: "), part67
        print ('\n')

def dokument7():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part71 in line.split():
                if "gitar" in part71:
                    print ("dokument 7: "), part71
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part72 in line.split():
                if "budow" in part72:
                    print ("dokument 7: "), part72
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part73 in line.split():
                if "podstrunnic" in part73:
                    print ("dokument 7: "), part73
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part74 in line.split():
                if "muzyk" in part74:
                    print ("dokument 7: "), part74
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part75 in line.split():
                if "strun" in part75:
                    print ("dokument 7: "), part75
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part76 in line.split():
                if "korp" in part76:
                    print ("dokument 7: "), part76
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt') as openfile:
        for line in openfile:
            for part77 in line.split():
                if "drewn" in part77:
                    print ("dokument 7: "), part77
        print ('\n')
        print ('\n')
        print ('\n')

def menu():

    print '\n', ("a) Wczytanie dokumentu.")
    print ("b) Zliczenie występowania termów dla wyznaczonego dokumentu."), '\n'

    loop = True
    while loop:

        action = raw_input('Wybierz operację: \n')

        if action == 'a':
            doc = input('Wybrałeś dokument: \n')

            if doc == 1:
                print ("Wybrałeś dokument nr 1: "), '\n', dokument1()
            if doc == 2:
                print ("Wybrałeś dokument nr 2: "), '\n', dokument2()
            if doc == 3:
                print ("Wybrałeś dokument nr 3: "), '\n', dokument3()
            if doc == 4:
                print ("Wybrałeś dokument nr 4: "), '\n', dokument4()
            if doc == 5:
                print ("Wybrałeś dokument nr 5: "), '\n', dokument5()
            if doc == 6:
                print ("Wybrałeś dokument nr 6: "), '\n', dokument6()
            if doc == 7:
                print ("Wybrałeś dokument nr 7: "), '\n', dokument7()

        if action == 'b':
            print ("Wybierz dokument do zliczenia ilości termów: ")
            count = input('Wybrałeś dokument: \n')

            if count == 1:
                print ("Wybrałeś dokument nr 1: "), '\n', dokument1()
            if count == 2:
                print ("Wybrałeś dokument nr 2: "), '\n', dokument2()
            if count == 3:
                print ("Wybrałeś dokument nr 3: "), '\n', dokument3()
            if count == 4:
                print ("Wybrałeś dokument nr 4: "), '\n', dokument4()
            if count == 5:
                print ("Wybrałeś dokument nr 5: "), '\n', dokument5()
            if count == 6:
                print ("Wybrałeś dokument nr 6: "), '\n', dokument6()
            if count == 7:
                print ("Wybrałeś dokument nr 7: "), '\n', dokument7()

# dokument1()
# dokument2()
# dokument3()
# dokument4()
# dokument5()
# dokument6()
# dokument7()
menu()
def menu():

    print '\n', ("a) Wczytanie dokumentu.")
    print ("b) Zliczenie występowania termów dla wyznaczonego dokumentu."), '\n'

        if action == 'a':
            doc = input('Wybrałeś dokument: \n')

        if action == 'b':
            print ("Wybierz dokument do zliczenia ilości termów: ")
            count = input('Wybrałeś dokument: \n')

Może nie jest to najwydajniejszy kod, ale próbuję, jak mogę.
Chciałbym, aby pod operacją b) program zliczał ilość występowania tych samych słów\termów w jednym dokumencie, przykład:

Dokument1: gitar [12]
Dokument1: budow [3]
Dokument1: podstrunnic [6]
Dokument1: muzyk [8]
Dokument1: strun [0]
Dokument1: korp [1]
Dokument1: drewn [4]

Zastanawiam się nad zastosowaniem dicta. Próbowałem splitem to łączyć
A gdyby tak najpierw przerobić te słowa na listę?
Tylko jak to ugryźć.

Macie jakieś pomysły?

Co ja paczę? :D - Mózg 2019-03-04 14:38
@Mózg: No ja chciałem dodać odpowiedź, ale duracelle mi się wyczerpały, gdy spojrzałem na listing... - Pyxis 2019-03-04 14:39
Kolega jest na 7 semstrze studiow? - Akihito 2019-03-04 15:08
@Akihito: a skąd masz informacje o studiowaniu? Poza tym może studiuje np. weterynarię ;) - cerrato 2019-03-04 15:13
D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art7.txt - sciezka do pliku duzo mowi, dlatego pytam czy to jego zadanie na VII semestrze studiow czy sciezka rnadomowa bo kod jest pisany przez jakiegos swiezaka a VII semestr studiow mi nie pasuje - Akihito 2019-03-04 15:15
No ja w ogóle w szczegóły kodu nie zaglądałem, bo to takie totalne Ctrl+C/Ctrl+V. Poza tym powtórzę - może kolega studiuje coś totalnie niezwiązanego z programowaniem, a w ramach jakichś zajęć pobocznych/kółka informatycznego sobie coś pisze. - cerrato 2019-03-04 15:17

Pozostało 580 znaków

2019-03-04 15:19
4

o_O to jest przecież tak chamski copypaste że na klawiaturze masz już chyba wytarte kompletnie ctrl, c i v...

def read_document(path):
    with open(path, 'r') as openfile:
        return openfile.read().split("\s+")

To raz.
Dwa:

def count_words(data):
    counter = collections.defaultdict(int)
    for word in data:
        couter[word]+=1
    return counter

i voila, mamy funkcje która dla podanego pliku zwróci ci listę słów i mamy funkcje która dla podanej listy słów policzy ile razy występuje każde słowo i zwróci ci dicta który mapuje słowo na liczbę wystąpień.
Teraz porównaj to z tym co napisałeś. Aż boje się myśleć co by było jakbyś miał np. 1000 plików z danymi i 1000 słów...


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.
edytowany 2x, ostatnio: Shalom, 2019-03-04 15:21
Jestem nowy w Pythonie, więc pytanie może będzie banalne, ale dlaczego nie zainicjalizowałeś słownika counter = {}? - classongrass 2019-03-04 16:00
bo musiałbym sprawdzać czy słowo juz jest w słowniku a defaultdict to taki magik że jak się odniesiesz do nieistniejącego klucza to ci zwróci domyślną wartość i utworzy taki klucz :D - Shalom 2019-03-04 16:22
Nie koniecznie, @Shalom jest pewna sprytna metoda 'get' która w przypadku gdy nie znajdzie czegoś, zwróci ci coś domyślnie. Nie porównywałem prędkości, ale linię 2-4 można zastąpić bez importowania collections: 2| counter = {} 3| for word in data: 4| counter[word] = counter.get(word, 0) +1 Co jeśli nie znajdzie słowa, da zero i doda jeden. Jak znajdzie słowo, to do tej wartości doda jeden. Chociaż @iksde podał jeszcze prostszą metodę, też importując moduł, ale chyba najłatwiej :D - Guaz 2019-03-04 18:50
@Guaz: no właśnie o to chodzi, masz dwa lookupy zamiast jednego. - enedil 2019-03-05 22:32

Pozostało 580 znaków

2019-03-04 15:46
1
Shalom napisał(a):
def count_words(data):
    counter = collections.defaultdict(int)
    for word in data:
        couter[word]+=1
    return counter

i voila, mamy funkcje która dla podanego pliku zwróci ci listę słów i mamy funkcje która dla podanej listy słów policzy ile razy występuje każde słowo i zwróci ci dicta który mapuje słowo na liczbę wystąpień.

Albo używając dobrodziejstw stdliba pythona:

from collections import Counter

counter = Counter(data)

collections.Counter

ale to py3 a kto by chciał w py3 pisać :P py2 masterrace - Shalom 2019-03-04 16:23
@Shalom: Counter został dodany w wersjach 2.7 i 3.1. - Mózg 2019-03-04 16:32
hm faktycznie, to chyba Alzheimer... - Shalom 2019-03-04 16:35
na szczęście już od jakiegoś czasu mamy zero z przodu na https://pythonclock.org/ :) - iksde 2019-03-04 16:36
Byle nie wskoczyło jeden ponownie :D - Guaz 2019-03-04 18:50

Pozostało 580 znaków

2019-03-05 14:14
0

5 semestr elektroniki, Python - dodatkowo, a ścieżka jest z folderu kolegi, rok wyżej, gdyby kogoś to interesowało = )

Pany, help. Coś skopałem!
screenshot-20190305141428.png

import collections

def read_document():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt', 'r') as openfile:
        return openfile.read().split("\s+")

    counter = collections.defaultdict(int)
    for word in 'D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt':
        counter[word]+=1
    return counter

read_document()
edytowany 1x, ostatnio: Bartek Pieczka, 2019-03-05 14:15
po co instalować pycharma do takich programików python idle, ewentualnie notepad i jazda - Visual Code 2019-03-09 23:31

Pozostało 580 znaków

2019-03-05 14:48
1

przejdź ten kod linijka po linijce i zastanów się, co każda instrukcja robi
żeby było łatwiej, wyprintuj sobie wynik read_document() pod koniec

edytowany 1x, ostatnio: iksde, 2019-03-05 14:50

Pozostało 580 znaków

2019-03-05 15:05
3

Brawo, nie umiesz nawet skopiować kawałka kodu. Widzisz ze ja tam dałem DWIE OSOBNE FUNKCJE? A ty jeszcze je popsułeś i skleiłeś w jedną. Jackpot.


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.
edytowany 1x, ostatnio: Shalom, 2019-03-05 15:07

Pozostało 580 znaków

2019-03-05 21:26
0

Shalom - wybacz; robię różne warianty po prostu.
Myślałem, że metody działają tak, że każda wykonuje się osobno, są niezależne. Zależało mi, żeby poniższa odnosiła się do powyższej.
Metodą prób i błędów - nauczę się, obiecuję.

screenshot-20190305211459.png

Panowie (i PANIE!!!).
No, jak widzicie. Pi razy oko spodziewałem się tego, co tu jest. Ty

Wiem, że zczyta wszystko, co znajduje się w danym dokumencie.
Jak teraz to ograniczyć do tych 7 słów kluczowych, (przy okazji nie gwałcąc już te ctrl+c -> ctrl+v):
"gitar"
"budow"
"podstrunnic"
"muzyk"
"strun"
"korp"
"drewn"
??

Można to ciachnąć if'ami ?

import collections
from pip._vendor.progress import counter

def read_document():
    with open('D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt', 'r') as openfile:
        return openfile.read().split("\s+")
print read_document()

def count_words(data):
    counter = collections.defaultdict(int)
    for word in data:
        counter[word]+=1
    return counter
print counter

# read_document()
edytowany 1x, ostatnio: Bartek Pieczka, 2019-03-05 21:27

Pozostało 580 znaków

2019-03-05 22:40
5

No dobra ale nadal zupełnie nie rozumiesz co robisz. Sklejasz jakieś losowe kawałki kodu bez jakiejkolwiek refleksji. Jeszcze ofc na pałe importujesz jakieś rzeczy z d**y bo IDE podpowiedziało. Brak mi słow. Odpuść programowanie, to nie dla ciebie.

import collections

def read_document(filepath):
    with open(filepath, 'r') as openfile:
        return openfile.read().split("\s+")

def count_words(data):
    counter = collections.defaultdict(int)
    for word in data:
        counter[word]+=1
    return counter

filepath = 'D:/Studia/SemestrVII/InteligentneSystemyDecyzyjne/ISD/art1.txt'
counts = count_words(read_document(filepath))
print(counts)
print(counts['muzyk'])

Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.
edytowany 2x, ostatnio: Shalom, 2019-03-05 22:42

Pozostało 580 znaków

2019-03-06 15:29

W języku polskim nie ma takich słów jak korp i drewn. Przypuszczam, że Bartek nie chce liczyć słów, tylko podłańcuchy.

Najczęściej chcemy:

  • 'aba' == 'ABA'
  • ABA w ABABA => 1

Specjalnie dla Bartka, najprostsze w implentacji rozwiązanie:

>>> s = open('hagstrom_pat_smear.txt').read().lower()

>>> kws = set('gitar budow podstrunnic muzyk strun korp drewn'.split())

>>> {print(s.count(kw), kw) for kw in kws};
12 gitar
1 podstrunnic
1 drewn
5 strun
2 budow
4 korp
4 muzyk

>>> 
set('gitar budow podstrunnic muzyk strun korp drewn'.split()) bardziej naookło się nie da? kws = {'gitar', 'budow', 'muzyk', ...} - iksde 2019-03-06 17:06
Nie chciało mi się wklepywać apostrofów i przecinków? - Mózg 2019-03-06 18:21

Pozostało 580 znaków

2019-03-06 17:02
0

A może on chce te słowa lematyzować/stemmować? To też da się zrobić, chociaż dla PL to trudna kwestia (robiłem takie rzeczy do mgr).


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.
Przepraszam, chodziło mi o podłańcuchy, tak; i gdy już mam te łańcuchy, następuje ich zliczanie. - Bartek Pieczka 2019-03-07 12:03

Pozostało 580 znaków

2019-03-09 00:00
0

A gdyby pójść dalej i utworzyć macierz częstotliwości (TFM), dla przykładu 10 termów:

  1. Kabel
  2. Kapodaster
  3. Kostka
  4. Metronom
  5. Przetworniki
  6. Pokrowiec
  7. Slide
  8. Struny
  9. Stroik
  10. Stojak
    screenshot-20190309000218.png
    Jest 15 klientów, którzy kupili po 3 produkty z powyższych.
    Na podstawie tych danych ja również wybieram jakieś 3 produkty i dostaję sygestię 4ego.
    Problem dość interesujący. Znalazłem temat w sieci, gdzie zalecają skorzystać z reindexu.
    https://stackoverflow.com/que[...]rm-frequency-matrix-in-python`

Albo też Collaborative Filtering (dokładnie: Item-based, który bazując tylko na ocenach, wyszukuje podobne przedmioty i je rekomenduje).
W tym celu utworzyłem arkusz: 'sprzedaz.csv', bazę danych, gdzie przy wartości '1' mamy kupiony przedmiot:

Utworzyłem kodzik wyprintowujący mi te dane na konsolkę:

# -*- coding: utf-8 -*-
import pandas as pd

def baza():
    ratings_data = pd.read_csv("D:/Studia/koloPython/InteligentneSystemyDecyzyjne/sprzedaz.csv")
    ratings_data.head()
    print ratings_data, '\n', '\n'

def menu():

    # loop = True
    # while loop:

        kabel = input ('Czy chcesz kupić: kabel?'), '\n'
        if kabel == 1:
            print 'masz kabel'
        elif kabel == 0: print 'brak kabla'

        kapodaster = input ('Czy chcesz kupić: kapodaster?'), '\n'
        if kapodaster == 1:
            print 'masz kapodaster'
        elif kapodaster == 0: print 'brak kapodastera'

        kostka = input ('Czy chcesz kupić: kostkę?'), '\n'
        if kostka == 1:
            print 'masz kostkę'
        elif kostka == 0: print 'brak kostki'

        metronom = input ('Czy chcesz kupić: metronom?'), '\n'
        if metronom == 1:
            print 'masz metronom'
        elif metronom == 0: print 'brak metronomu'

        przetworniki = input ('Czy chcesz kupić: przetworniki?'), '\n'
        if przetworniki == 1:
            print 'masz przetworniki'
        elif przetworniki == 0: print 'brak przetworników'

        pokrowiec = input ('Czy chcesz kupić: pokrowiec?'), '\n'
        if pokrowiec == 1:
            print 'masz pokrowiec'
        elif pokrowiec == 0: print 'brak pokrowca'

        slider = input ('Czy chcesz kupić: slider?'), '\n'
        if slider == 1:
            print 'masz slider'
        elif slider == 0: print 'brak slidera'

        struny = input ('Czy chcesz kupić: struny?'), '\n'
        if struny == 1:
            print 'masz struny'
        elif struny == 0: print 'brak strun'

        stroik = input ('Czy chcesz kupić: stroik?'), '\n'
        if stroik == 1:
            print 'masz stroik'
        elif stroik == 0: print 'brak stroika'

        stojak = input ('Czy chcesz kupić: stojak?'), '\n'
        if stojak == 1:
            print 'masz stojak'
        elif stojak == 0: print 'brak stojaka'

baza()
menu()

Problem natury, że:

  • Gdy już wpiszę te dane, wybrałem 3 przedmioty, np. :
  1. Kabel - 1
  2. Kapodaster - 0
  3. Kostka - 0
  4. Metronom - 0
  5. Przetworniki - 1
  6. Pokrowiec - 0
  7. Slide - 0
  8. Struny - 1
  9. Stroik - 0
  10. Stojak - 0

Dostaję wiadomość zwrotną (na podstawie sugestii z arkusza .csv!):
Polecamy: Pokrowiec.

Jak to ugryźć?

edytowany 2x, ostatnio: Bartek Pieczka, 2019-03-09 00:05
Co Ty masz do tej biednej kombinacji Ctrl+c Ctrl+v, że ją tak katujesz? - enedil 2019-03-09 01:25
Chcę oddzielić wartości, żeby łatwiej to można było złożyć w całość. - Bartek Pieczka 2019-03-09 01:27

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: Yandex