Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ustalanie słów kluczowych dla danego tekstu
smook
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.03.2003

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


Zakładam, że dla strony z artykułami chciałbym zastosowac jakiś sposób grupowania ich na zasadzie podobieństw. Doszedłem, że najwygodniejszym (i automatycznym) sposobem byłoby ustalanie słów kluczowych dla danego tekstu. Wtedy wyświetlając jakiś artykuł pokazywał bym tez linki do artykułów zawierających takie same słowa kluczowe. Ponieważ liknów mogło by być całlkiem sporo kolejnych rokiem będzie wyswietlanie ich np. w zależności od ich czasu dodania, czytelności itp. - mniejsza o kryteria to jest sprawa wtórna.

Problem jednak w tym, że dla każdego dodawanego tekstu pasowało by utworzyć słowa kluczowe i wpisać je do odpowiedniego pola (uniknę wtedy sporych opóźnień przy szukaniu tych słów podczas każdego wyświetlenia artykułu). I teraz pytanie w jaki sposób to robić, jak szukać tych słów?

Dla uproszczenia pomijam odmianę przez przypadki itp..
Rozumiem, że mógłbym podzielić string na słowa, każde dodawać do tablicy i liczyć ile razy w tej tablicy wystąpiło. Czy dobrze rozumuje, czy są może lepsze sposoby?


--------------------
---
Smook
Go to the top of the page
+Quote Post
spenalzo
post
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Ja bym zrobił tak, że rozwaliłbym tekst na wyrazy, wpakował do tablicy wszystkie dłuższe niż 3-5 znaków (pominięcie np. ich, jego, z,do) jako klucz nazwa wyrazu, a jako wartość ilosć wystąpień, posortował malejąco i wrzucił 100 pierwszych jako słowa kluczowe.
To tak w najprostszej wersji - w trudniejszej zrobić dodatkowo listę wyrazów które nie mogą być słowami kluczowymi (np. było, byłem itd).


--------------------

Go to the top of the page
+Quote Post
BzikOS
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

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


Heh, a w praktyce:

[php:1:2d122adbf7]<?php
$text = "Zakładam, że dla strony z artykułami chciałbym zastosowac jakiś sposób grupowania ich na zasadzie podobieństw. Doszedłem, że najwygodniejszym (i automatycznym) sposobem byłoby ustalanie słów kluczowych dla danego tekstu. Wtedy wyświetlając jakiś artykuł pokazywał bym tez linki do artykułów zawierających takie same słowa kluczowe. Ponieważ liknów mogło by być całlkiem sporo kolejnych rokiem będzie wyswietlanie ich np. w zależności od ich czasu dodania, czytelności itp. - mniejsza o kryteria to jest sprawa wtórna.

Problem jednak w tym, że dla każdego dodawanego tekstu pasowało by utworzyć słowa kluczowe i wpisać je do odpowiedniego pola (uniknę wtedy sporych opóźnień przy szukaniu tych słów podczas każdego wyświetlenia artykułu). I teraz pytanie w jaki sposób to robić, jak szukać tych słów?

Dla uproszczenia pomijam odmianę przez przypadki itp..
Rozumiem, że mógłbym podzielić string na słowa, każde dodawać do tablicy i liczyć ile razy w tej tablicy wystąpiło. Czy dobrze rozumuje, czy są może lepsze sposoby?";


$tempArr1 = Array(",", ".", ":", ";", "(", ")", "?", "!", "n", "r", " dlaczego ");
$tempArr2 = Array('', '', '', '', '', '', '', '', ' ', '', '');
$text = str_replace($tempArr1, $tempArr2, $text);

$tablica = explode(" ", $text);
foreach($tablica as $aKey=>$aVal) {
$tablica[$aKey] = strtolower($aVal);
if(strlen($aVal) < 4)
unset($tablica[$aKey]);
}

$tablica2 = array_count_values($tablica);
arsort($tablica2);

print("TOP TEN<br>");
$i=0;
foreach($tablica2 as $aKey=>$aVal) {
print($aKey . " = " . $aVal . "<br>");
if(++$i == 10)
break;
}
?>[/php:1:2d122adbf7]

W tablicach $temp?questionmark.gif można powstawiać słowa, które nie powinny być zliczane.
Go to the top of the page
+Quote Post
spenalzo
post
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


[php:1:ac2d8aa87c]<?php
// Ilosc wystapien, zeby wyraz byl slowem kluczowym
$prog=2;

// Minimalna dlugosc wyrazu
$len=5;

$text="Zakładam, że dla strony z artykułami chciałbym zastosowac jakiś sposób grupowania ich na zasadzie podobieństw. Doszedłem, że najwygodniejszym (i automatycznym) sposobem byłoby ustalanie słów kluczowych dla danego tekstu. Wtedy wyświetlając jakiś artykuł pokazywał bym tez linki do artykułów zawierających takie same słowa kluczowe. Ponieważ liknów mogło by być całlkiem sporo kolejnych rokiem będzie wyswietlanie ich np. w zależności od ich czasu dodania, czytelności itp. - mniejsza o kryteria to jest sprawa wtórna.

Problem jednak w tym, że dla każdego dodawanego tekstu pasowało by utworzyć słowa kluczowe i wpisać je do odpowiedniego pola (uniknę wtedy sporych opóźnień przy szukaniu tych słów podczas każdego wyświetlenia artykułu). I teraz pytanie w jaki sposób to robić, jak szukać tych słów?

Dla uproszczenia pomijam odmianę przez przypadki itp..
Rozumiem, że mógłbym podzielić string na słowa, każde dodawać do tablicy i liczyć ile razy w tej tablicy wystąpiło. Czy dobrze rozumuje, czy są może lepsze sposoby?";

$org = Array(",", ".", ":", ";", "(", ")", "?", "!", "n", "r","-",""","'");
$zam = Array('', '', '', '', '', '', '', '', ' ', '','','','');

$text=str_replace($org, $zam, $text);
$tab=explode(" ",$text);
foreach($tab as $k=>$wyraz)
{
$wyraz=strtolower($wyraz);
if(strlen($wyraz)>=$len)
{
$slowa[$wyraz]+=1;
}
}
foreach ($slowa AS $wyraz=>$ilosc)
{
if($ilosc<$prog)
{
unset($slowa[$wyraz]);
}
}
arsort($slowa);
?>[/php:1:ac2d8aa87c]
potem
[php:1:ac2d8aa87c]<?php
print_r($slowa);
?>[/php:1:ac2d8aa87c]
co zwróci
Cytat
Array
(
[słowa] => 3
[tekstu] => 2
[wtedy] => 2
[sposób] => 2
[kluczowe] => 2
[każdego] => 2
[tablicy] => 2
[jakiś] => 2
)


--------------------

Go to the top of the page
+Quote Post
smook
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.03.2003

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


Właśnie w ten sposób to pojmowałem, dzięki za pomoc.

Postaram się jeszcze poszukać na jakiś grupach dotyzących bibliotekoznawstwa i katalogowania zbiorów, bo "polska język trudna sprawa" i tworzenie słów kluczowych może jest tu zabawne.


--------------------
---
Smook
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 Aktualny czas: 21.08.2025 - 06:33