Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Częstotliwość występowania wyrazu
mimol
post 9.02.2008, 19:40:20
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

Ostrzeżenie: (0%)
-----


Elo jęsli mam plik z tysiącami wyrazami, to da się jakiś program anpisać, który wyraz się najczęsciej powtarza?
Go to the top of the page
+Quote Post
nowotny
post 9.02.2008, 22:40:48
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


Da się... wczytujesz każdą linię pliku do tablicy... potem przelatujesz po tej tablicy i sprawdzasz każdy element za pomocą funkcji count" title="Zobacz w manualu PHP" target="_manual(array_keys" title="Zobacz w manualu PHP" target="_manual) i wyniki wpisujesz do innej tablicy w postaci $tablica[]=array(nazwa elementu, liczba wystąpień) jednocześnie usuwając te elementy z pierwszej tablicy... w $tablicy będziesz elementy z dwoma własnościami, wyrazem i liczbą wystąpień... po drodze jeszcze będziesz musiał użyć referencji w jednym miejscu, ale to już pozostawiam tobie do obadania... smile.gif

Pewnie to nie jest najbardziej wydajny sposób ale tylko taki mi przyszedł do głowy...

Ten post edytował nowotny 9.02.2008, 22:41:31
Go to the top of the page
+Quote Post
sobstel
post 9.02.2008, 22:57:39
Post #3





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


lepiej wykorzystać array_count_values(), np.

  1. <?php
  2. $contents = file_get_contents($file);
  3. $words = explode(' ', $contents); // wczytanie do tablicy wszystkich wyrazów
  4. $counts = array_count_values($words); // tablica z ilościamo wystąpień
  5. rsort($counts); // sortowanie od najwięcej wystąpień do najmniej
  6.  
  7. // oczytujemy pierwszą wartość (najwięcej wystąpień)
  8. reset($counts);
  9. echo key($counts); // słowo
  10. echo current($count); ilość wystąpień
  11. ?>


można tam dodać jeszcze array_filter() od filtrowania np. pustych wartości oraz spójników itp.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
nowotny
post 9.02.2008, 23:13:40
Post #4





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


Też to rozważałem ale co jeśli wyrazy zawierają znaki które są niedozwolone jako indeksy elementów...?

Ten post edytował nowotny 9.02.2008, 23:14:18
Go to the top of the page
+Quote Post
mimol
post 10.02.2008, 12:57:47
Post #5





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

Ostrzeżenie: (0%)
-----


jestem troche zielony z php;/
Czy mogłby mi ktoś dać gotowy kod do tego?
założmy, że mam te wyrazy w pliku wyrazy.txt (oczywiście każdy wyraz mam w osobnym wierszu) smile.gif )
najlepiej jak to potrafię poprawić to coś takiego:
Kod
<?php
$contents = file_get_contents($file);
$file = file("wyrazy.txt");
$words = explode(' ', $contents); // wczytanie do tablicy wszystkich wyrazów
$counts = array_count_values($words); // tablica z ilościamo wystąpień
rsort($counts); // sortowanie od najwięcej wystąpień do najmniej

// oczytujemy pierwszą wartość (najwięcej wystąpień)
reset($counts);
echo key($counts); // słowo
echo current($counts); ilość wystąpień
?>


Ten post edytował mimol 10.02.2008, 13:04:58
Go to the top of the page
+Quote Post
Virti
post 10.02.2008, 13:43:56
Post #6





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $file = file("wyrazy.txt");
  3. ?>
to jest niepotrzebne
Go to the top of the page
+Quote Post
remik09
post 10.02.2008, 13:55:17
Post #7





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

Ostrzeżenie: (0%)
-----


@sopel twoj skrypt chyba jednak nie zrobi tego

  1. <?php
  2. echo key($counts);
  3. ?>


jestes pewny ze to wyswietli wyraz a nie numer klucza ?

@mimol ja taka funkcje robilem na mysql bo jakos chyba latwiej, ale chetnei skorzystam z rozwiazania jak bedzie tu podane, a jesli chcesz skorzystac z tego na mysql to powiedz i podam kod


--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
Go to the top of the page
+Quote Post
mimol
post 10.02.2008, 14:03:36
Post #8





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

Ostrzeżenie: (0%)
-----


ale czy bedę umiał masowo dodać te moje wyrazy do bazy??
Czy będę musiał pojedyńczo dodawać te wyrazy do bazy..?
Go to the top of the page
+Quote Post
Virti
post 10.02.2008, 16:38:10
Post #9





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

Ostrzeżenie: (0%)
-----


będziesz musiał chyba ułożyć pętlę do dodawania tych słówek, chyba, że jest sposób na dodanie do bazy kilku rekordów jednym zapytaniem, ale raczej wątpie
Go to the top of the page
+Quote Post
sobstel
post 11.02.2008, 08:49:20
Post #10





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat('mimol')
jestem troche zielony z php;/ Czy mogłby mi ktoś dać gotowy kod do tego?


nie... zwłaszcza, że praktycznie go ode mnie dostałeś. jeśli nie działa to napisz w czym problem. jeśli nie potrafisz ssobie z nim poradzić to zapraszam do tego działu.

Cytat(remik09 @ 10.02.2008, 13:55:17 ) *
@sopel twoj skrypt chyba jednak nie zrobi tego (...) jestes pewny ze to wyswietli wyraz a nie numer klucza ?


masz rację, to wyświetli klucz tablicy... tylko że kluczem jest właśnie ten wyraz. ;-)
sprawdź sobie co zwraca array_count_values" title="Zobacz w manualu PHP" target="_manual.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 03:30