Textový parser pre funkciu cenzura slov

Programovacie jazyky, rady, poradňa...
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Textový parser pre funkciu cenzura slov

Príspevok od používateľa weroro »

Ahoj

Mám takú otázku. Ako správne vyhľadávať slová z blacklistu? Chápem, že existujú rôzne tvary nepovolených slov (vulgarizmov) ale čo v prípade ak nie sú slová oddelené medzerou a pod.

Osobne ma to napadlo riešiť pomocou indexOf(), že daný reťazec rozdelím do poľa podľa separátoru [medzera] a potom každú položku poľa testujem na prítomnosť slova z blacklistu.

napr.

Kód: Vybrať všetko

function $censored (inputText:String):String
{
	var blacklist:Array = new Array ('zakazaneSlovo1', 'zakazaneSlovo2', 'zakazaneSlovo3', 'zakazaneSlovo4');
	var tmpArray:Array = inputText.split (' ');
	for (var i:Number = 0; i < tmpArray.length; i++)
	{
		for (var j:Number = 0; j < blacklist.length; j++)
		{
			if (tmpArray[i].toLowerCase ().indexOf (blacklist[j].toLowerCase ()) != -1)
			{
				// 
			}
		}
	}
	return tmpArray.join (' ');
}
toto mi aj funguje ale, je tu prípad kedy napr. slovo debil môže byť nechtiac alebo naschvál spojené s iným slovom - tojedebil. Ďalej je tu prípad kedy hľadané slovo môže byť súčasťou iného slova ktorého význam nieje vulgárny a to hlavne v prípade, kedy vyhľadávam slovo bez interpunkcie napr. slovo opica.

Ďakujem za reakcie. Ak mám niečo upresniť pýtajte sa.
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Textový parser pre funkciu cenzura slov

Príspevok od používateľa pcsiete »

No ak chceš aby ti to dokázalo rozoznať aj možno vulgárne mienené slová a slovné spojenia (napr. vyššie zmienená opica), musel by mať tvoj kód nadprirodzené schopnosti alebo veľmi veľkú databázu a výpočty.
Oveľa lepší je možno systém zisťovania, či daný text obsahuje vulgárne slovo (alebo jeho časť) bez ohľadu na to, či je v slovnom spojení. Potom by si si urobil hranicu, dajmetomu jeden potenciálny vulgarizmus na sto znakov. To by znamenalo že ak sa našli v texte o dĺžke 300 znakov štyri možné vulgarizmy, tak sa tento príspevok nebude zobrazovať a predá sa na kontrolu adminovi. Samozrejme aj tento systém by mohol mať problém.

Mimo iné možno by si mal svoj blacklist prerobiť na čiastočné regexy. Tak by si možno odhalil aj rôzne umiestnenia hviezdičiek v rôznych nadávkach.
CheZteR
Redeemer
Redeemer
Používateľov profilový obrázok
Príspevky: 10232
Registrovaný: 25 feb 2009, 6:54
Bydlisko: KE/BA

Re: Textový parser pre funkciu cenzura slov

Príspevok od používateľa CheZteR »

nemusi mat vobec nadprirodzene schopnosti, da sa to, ja vsak neviem ako, ale viem ze sa da, ked som svojho casu hraval counter strike na proserver.sk, mali to tam takto osetrene, ked si napisal p*ca, dostal si freeze na chat, ked si ale napisal opica, nic sa nestalo, tak isto kedysi davno na legendarnom chatQ.sk ... tiez to tam mali osetrene, za p*ca bol ban, za opica nic :)
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Textový parser pre funkciu cenzura slov

Príspevok od používateľa harrison314 »

to co chces sa nazyva lematizacia (pre slovencinu nie je doriesena),
len podla mna je to prilis vypoctovo narocne pre tvoje uceli, najlepsie je asi pouzit slovnik zo vsetkimi moznymi tvarmi zakazanych slov a z neho vyrobit regex, alebo AHO corasick-ej algoritmus, ale v ziadnom pripade nie indexOf
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: Textový parser pre funkciu cenzura slov

Príspevok od používateľa sharky-no »

napada ma celkom jednoduche riesenie, a to take, ze by si mal dalsie pole stringov ale s vynimkami. a teda ak by sa nasiel vulgarizmus, tak by sa este otestoval ci to nie je nejaka vynimka. a namiesto porovnavania stringov cez == by som pouzil ekvivalent strpos, ktory vyhlada poziciu toho slova v stringu (cize to moze byt aj substring ako napr. ten tvoj tojedebil). A mozno existuje aj krajsie riesenie :) ale to ma z postele po prebudeni zatial nenapadlo :lol:
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Textový parser pre funkciu cenzura slov

Príspevok od používateľa pcsiete »

@CheZteR: "Nadprirodzené schopnosti" s istou dávkou irónie. Vyjadrená potreba nadprirodzených schopností sa vzťahovala aj na slovo opica. Jednoducho prepokladať ako všeliako môže človek skomoliť nadávku tak, aby to počítaču nedalo zmysel ale ostatným áno je "vypoctovo narocne" (harrison314) alebo len inako povedané v slovenčine veľmi ťažko dosiahnuteľné. Po sčítaní týchto faktov sa to dá relatívne prifarbene a povznesene pomenovať aj ako nadprirodzená schopnosť.
Mimo iné som mu jednoduché riešenia na jeho problém poskytol, čiže definitívne nev ravím že je to všetko nemožné.
:)
Napísať odpoveď