Kluczem do tego typu podejścia jest dostęp do dobrej bazy danych angielskich słów. W moim systemie jest ten plik, /usr/share/dict/words
który zawiera wiele słów, ale zamiast tego można użyć innych źródeł.
Podejście
Moje ogólne podejście byłoby grep
takie:
$ grep -vwf /usr/share/dict/words sample.txt
Gdzie jest twój przykładowy wynik sample.txt
.
W moich ograniczonych testach rozmiar words
słownika wydawał się zwalniać grep
. Moja wersja ma ponad 400k linii. Więc zacząłem robić coś takiego, żeby trochę to zepsuć:
$ head -10000 /usr/share/dict/words > ~/10000words
Przykładowe przebiegi (10 tys.)
Uruchom plik, używając pierwszych 10 000 słów z „słownika”.
$ grep -vwf ~/10000words sample.txt
714
01:11:22,267 --> 01:11:27,731
Auch wenn noch viele Generationen auf einen Wechsel hoffen,
715
01:11:27,732 --> 01:11:31,920
werde ich mein Bestes geben
und hoffe, dass andere das gleiche tun.
I'm giving mine, I'm doing my best
hoping the other will do the same
716
01:11:31,921 --> 01:11:36,278
Wir haben eine harte Arbeit vor uns,
um den Lauf der Dinge zu ändern.
it's going to be hard work
for things to turn around.
717
01:11:36,879 --> 01:11:42,881
Wenn man die Zentren künstlicher Besamung,
die Zuchtlaboratorien und die modernen Kuhställe besichtigt,
When visiting artificial insemination centers,
the selection center, modern stables,
UWAGA: To podejście zadziałało w ~ 1,5 sekundy na moim laptopie i5.
Wydaje się to realnym podejściem. Kiedy podniosłem go do 100 000 wierszy, zaczęło to jednak długo zajmować. Przerwałem go, zanim się skończyło, aby można było podzielić words
słownik na kilka plików.
UWAGA: Kiedy cofnąłem go do 50 000 linii, zajęło to 32 sekundy.
Nurkowanie głębiej (50 tys. Linii)
Kiedy zacząłem rozszerzać słownik do 50 000, natknąłem się na problem, którego się obawiałem, nakładający się na siebie języki.
$ grep -vwf ~/50000words sample.txt
714
01:11:22,267 --> 01:11:27,731
715
01:11:27,732 --> 01:11:31,920
werde ich mein Bestes geben
und hoffe, dass andere das gleiche tun.
hoping the other will do the same
716
01:11:31,921 --> 01:11:36,278
Wir haben eine harte Arbeit vor uns,
um den Lauf der Dinge zu ändern.
717
01:11:36,879 --> 01:11:42,881
Wenn man die Zentren künstlicher Besamung,
die Zuchtlaboratorien und die modernen Kuhställe besichtigt,
the selection center, modern stables,
Analizując problem
Jedną dobrą rzeczą w tym podejściu jest to, że możesz usunąć -v
i zobaczyć, gdzie nakłada się:
$ grep -wf ~/50000words sample.txt
Auch wenn noch viele Generationen auf einen Wechsel hoffen,
Even if it takes many generations hoping for a change,
I'm giving mine, I'm doing my best
it's going to be hard work
for things to turn around.
When visiting artificial insemination centers,
Słowo auf
jest najwyraźniej w obu językach ... cóż, przynajmniej w moim words
pliku, więc może to być podejście prób i błędów w celu dopracowania listy słów w razie potrzeby.
UWAGA: Wiedziałem, że to słowo, auf
ponieważ grep
pokolorowane na czerwono, które nie pojawia się na powyższym wyjściu z powodu ograniczonej natury SE 8-).
$ grep auf ~/50000words
auf
aufait
aufgabe
aufklarung
auftakt
baufrey
Beaufert
beaufet
beaufin
Beauford
Beaufort
beaufort
bechauffeur