usuwanie wyrazów/komórek/wierszy z błędami ortograficznymi

Użytkowanie arkusza kalkulacyjnego
arek
Posty: 50
Rejestracja: wt cze 02, 2009 5:23 pm

usuwanie wyrazów/komórek/wierszy z błędami ortograficznymi

Post autor: arek »

Hej,
Mam taki problem, mam arkusz, w którym znajduje się ponad 500k wierszy. Każdy wiersz to w zasadzie jedna komórka z jednym wyrazem. Jednak nie wszystkie wyrazy są poprawne ~ 10% to źle napisane wyrazy. Czy da się jakoś zautomatyzować ich usuwanie, bo 10% to przy jest około 50k. Najlepiej jakby usuwało cały wiersz. Ale może wystarczy, że zamieni na pusty tekst.
Ostatnio zmieniony sob gru 18, 2010 12:32 pm przez Jan_J, łącznie zmieniany 1 raz.
Powód: ortografia
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: usuwanie wyrazów/komurek/wierszy z błędami ortograficzny

Post autor: Jan_J »

Jeżeli arkusz zawiera tylko jedną kolumnę (tę ze słowami), to rozwiązałbym sprawę za pomocą wsadowego sprawdzania pisowni.
Zrobiłbym to bez OpenOffice, na poziomie poleceń systemu operacyjnego. Potrzebne byłoby przeniesienie danych do pliku tekstowego (dajmy na to plik.txt).
Dalej, używając aspell (da się go zainstalować w każdym systemie) z polskim słownikiem:
w uniksach

Kod: Zaznacz cały

cat plik.txt | aspell list -l pl | sort -i > zle_slowa.txt
w Windowsach

Kod: Zaznacz cały

type plik.txt | aspell list -l pl | sort > zle_zlowa.txt
Następnie wybrać te wiersze z plik.txt, których nie ma w zle_slowa.txt. Tu będzie dobry program comm (standard uniksowy, w Windowsach jako część cygwina). Oba pliki muszą być posortowane (plik zle_zlowa.txt już jest)

Kod: Zaznacz cały

comm -3 plik.txt zle_slowa.txt > dobre_slowa.txt
Wysiłek potrzebny do przeprowadzenia pracy w ten sposób zdaje mi się nieporównanie mniejszy od napisania i przetestowania odpowiedniego makra. Chyba że rzecz będzie wykonywana regularnie co pewien czas z różnymi ciągami słów otrzymywanymi właśnie w postaci arkuszy.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: usuwanie wyrazów/komurek/wierszy z błędami ortograficzny

Post autor: Jan_J »

Poprzedni post, pisany w porywie "jakby to zrobić od ręki" mógł zostać odebrany jako wyraz okrucieństwa ;)
Żeby złagodzić: weźmy AndrewMacro, listing 5.51 ze stron 78/79. Przygotowana na jego podstawie poniższa procedura pozwala stwierdzić, czy słowa z kolumny A występują w słowniku.

Kod: Zaznacz cały

Sub Sprawdzanie() 
	d = thisComponent
	s = d.Sheets.getByIndex(0)
	spell = createUnoService("com.sun.star.linguistic2.SpellChecker")
	Dim aLocale As New com.sun.star.lang.Locale
	aLocale.Language = "pl"
	aLocale.Country = "PL"
	Dim emptyArgs(0) As New com.sun.star.beans.PropertyValue
	c = 0
	r = 0
	slowo = s.getCellByPosition(c,r).getString()
	while (slowo <> "")
	  spr = spell.isValid(slowo, aLocale, emptyArgs())
	  s.getCellByPosition(c+1,r).setString(spr)
	  r = r+1
	  slowo = s.getCellByPosition(c,r).getString()
	wend
End Sub
Do usuwania wpisów z listy jest już tylko mały krok.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
arek
Posty: 50
Rejestracja: wt cze 02, 2009 5:23 pm

Re: usuwanie wyrazów/komurek/wierszy z błędami ortograficzny

Post autor: arek »

Dzięki wielkie za jedną i drugą podpowiedź jak to zrobić. Przyda się mi na pewno. W prawdzie nie chodziło mi o sprawdzanie w j. polskim (tylko w esperanto) ale taką małą przeróbkę to sobie już zrobię. Także wielkie dzięki. :-)
Czy OO.org korzysta z aspella?
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: usuwanie wyrazów/komurek/wierszy z błędami ortograficzny

Post autor: Jan_J »

arek pisze:Czy OO.org korzysta z aspella?
Nie. Z hunspella. Jest to narzędzie podobne do aspell, przeznaczone głównie dla języków z rozwiniętą fleksją.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ