Gale-Church-algoritmus
Kiejtés
- IPA: [ ˈɡɒlɛhurɦɒlɡoritmuʃ]
Főnév
Gale-Church-algoritmus
A Gale-Church-algoritmus egy statikus szövegszegmentáló algoritmus, amelyet bilingual (kétnyelvű) szövegek igazítására terveztek, például mondatok illesztésére egy forrásnyelvi és célnyelvi szöveg között. A módszert William A. Gale és Kenneth W. Church dolgozta ki 1991-ben.
---
Probléma és cél
- Kétnyelvű szövegek mondatonként történő igazítása.
- A cél: Azonosítani, hogy a forrásnyelvi mondatok mely célnyelvi mondatokkal állnak párban.
- Feltételezés: A mondatok hossza (karakterek vagy szavak száma) statisztikailag korrelál a két nyelv között.
---
Fő ötlet
- Hosszúság alapú korreláció:
* A forrásnyelvi és célnyelvi mondatok hossza (karakterek száma) között lineáris összefüggés van. * Ha egy mondat hosszabb a forrásnyelven, akkor általában hosszabb a célnyelven is.
- Valószínűségi modell:
* A mondatok hosszának különbségét egy normális eloszlás alapján modellezik:
ahol:
* \( l \): a forrásnyelvi mondat és a célnyelvi mondat hosszának különbsége, * \( \mu \): a várható érték, * \( \sigma \): a szórás.
- Dinamikus programozás:
* A mondatok illesztéséhez egy dinamikus programozási táblát építünk, ahol a cél a költség minimalizálása.
---
Alapfogalmak
- Input:
* Forrásnyelvi mondatok listája: * Célnyelvi mondatok listája:
- Hosszkülönbség modell:
* A mondatok hosszának különbségét a fenti valószínűségi modell becsüli.
- Dinamikus programozás:
* A táblázat kitöltésével keressük meg a lehetséges mondatillesztéseket, amelyek minimalizálják a költséget.
---
Algoritmus lépései
- Inicializálás:
* Hozz létre egy -es dinamikus programozási táblázatot, ahol a forrásnyelvi mondatok száma, a célnyelvi mondatok száma.
- Költség kiszámítása:
* A költség a mondatok hosszának különbsége alapján számítandó.
- Dinamikus programozás:
* Engedélyezett illesztési típusok: * 1-1: Egy forrásnyelvi mondat illeszkedik egy célnyelvi mondathoz. * 1-0 vagy 0-1: Egy mondat kimarad (hiányzó pár). * 1-2 vagy 2-1: Mondatok összevonhatók vagy szétbonthatók.
- Visszafejtés:
* A dinamikus programozási tábla alapján rekonstruáljuk az optimális mondatpárokat.
---
Python Implementáció
import numpy as np
def gale_church_align(source, target):
"""
Gale-Church algoritmus egyszerű implementációja.
"""
n = len(source)
m = len(target)
dp = np.zeros((n + 1, m + 1))
backtrack = np.zeros((n + 1, m + 1), dtype=int)
# Költségfüggvény
def cost(s_len, t_len):
diff = abs(s_len - t_len)
return diff # Egyszerű költség
# Dinamikus programozás
for i in range(1, n + 1):
for j in range(1, m + 1):
c1 = dp[i - 1, j - 1] + cost(len(source[i - 1]), len(target[j - 1]))
c2 = dp[i - 1, j] + cost(len(source[i - 1]), 0)
c3 = dp[i, j - 1] + cost(0, len(target[j - 1]))
dp[i, j] = min(c1, c2, c3)
backtrack[i, j] = np.argmin([c1, c2, c3])
# Visszafejtés
alignment = []
i, j = n, m
while i > 0 and j > 0:
if backtrack[i, j] == 0:
alignment.append((source[i - 1], target[j - 1]))
i -= 1
j -= 1
elif backtrack[i, j] == 1:
alignment.append((source[i - 1], None))
i -= 1
else:
alignment.append((None, target[j - 1]))
j -= 1
return alignment[::-1]
# Példa
source_sentences = ["This is a test.", "It works well.", "Another sentence."]
target_sentences = ["Ceci est un test.", "Ça marche bien.", "Une autre phrase."]
alignment = gale_church_align(source_sentences, target_sentences)
print("Illesztett mondatpárok:")
for s, t in alignment:
print(f"Source: {s} | Target: {t}")
---
Előnyök
- Egyszerű és gyors:
* Hosszúsági korrelációra épít, ami könnyen számítható.
- Hatékony:
* A dinamikus programozás segítségével lineáris időben fut.
---
Hátrányok
- Nyelvi szerkezetek eltérései:
* A nyelvtani eltérések vagy fordítási különbségek esetén pontatlan lehet.
- Szókincs figyelmen kívül hagyása:
* Csak a mondatok hosszát vizsgálja.
---
Alkalmazások
- Fordítói korpuszok igazítása:
* Gépi fordításhoz használt kétnyelvű adatok előállítása.
- Szövegillesztés:
* Kétnyelvű dokumentumok mondatainak illesztése.
- Szövegbányászat:
* Fordítási párhuzamosságok feltérképezése.
A Gale-Church-algoritmus egyszerűsége és hatékonysága miatt széles körben használt nyelvtechnológiai feladatokban.
Fordítások
Tartalom
- Gale-Church-algoritmus - Értelmező szótár (MEK)
- Gale-Church-algoritmus - Etimológiai szótár (UMIL)
- Gale-Church-algoritmus - Szótár.net (hu-hu)
- Gale-Church-algoritmus - DeepL (hu-de)
- Gale-Church-algoritmus - Яндекс (hu-ru)
- Gale-Church-algoritmus - Google (hu-en)
- Gale-Church-algoritmus - Helyesírási szótár (MTA)
- Gale-Church-algoritmus - Wikidata
- Gale-Church-algoritmus - Wikipédia (magyar)