Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrong prep #62

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 52 additions & 3 deletions src/reynir_correct/pattern.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ class IcelandicPlaces:
# "fjörður": "á", # Skip this since 'í *firði' is also common
"eyri": "á",
"vogur": "í",
"brekka": "í",
"brekka": "í", # Ath. algeng ending á bæjarheitum sem taka með sér 'á'
"staðir": "á",
# "höfn": "á", # Skip this since 'í *höfn' is also common
"eyjar": "í",
Expand Down Expand Up @@ -125,6 +125,39 @@ def includes(cls, place: str) -> bool:
return place in cls.ICELOC_PREP


class Countries:

"""Wraps a dictionary of country names with their
associated prepositions"""

COUNTRIES_PREP: Optional[Dict[str, str]] = None
COUNTRIES_PREP_JSONPATH = os.path.join(os.path.dirname(__file__), "resources", "countries_prep.json")

@classmethod
def _load_json(cls) -> None:
"""Load the place name dictionary from a JSON file into memory"""
with open(cls.COUNTRIES_PREP_JSONPATH, encoding="utf-8") as f:
cls.COUNTRIES_PREP = json.load(f)

@classmethod
def lookup_preposition(cls, place: str) -> Optional[str]:
"""Look up the correct preposition to use with a placename,
or None if the placename is not known"""
if cls.COUNTRIES_PREP is None:
cls._load_json()
assert cls.COUNTRIES_PREP is not None
prep = cls.COUNTRIES_PREP.get(place)
return prep

@classmethod
def includes(cls, place: str) -> bool:
"""Return True if the given place is found in the dictionary"""
if cls.COUNTRIES_PREP is None:
cls._load_json()
assert cls.COUNTRIES_PREP is not None
return place in cls.COUNTRIES_PREP


class PatternMatcher:

"""Class to match parse trees with patterns to find probable usage errors"""
Expand Down Expand Up @@ -188,6 +221,20 @@ def get_wordform(word: str, lemma: str, cat: str, variants: Iterable[str]) -> st
# Can be many possible word forms; we want the first one in most cases
return wordforms[0].bmynd

def get_wordform(self, lemma, cat, variants):
"""Get correct wordform from BinPackage,
given a set of variants"""

# Get rid of argument variants in verbs:
realvars = [x for x in variants if not x.isdigit() and x not in SKIPVARS]

wordforms = BIN.lookup_variants(lemma, cat, realvars)
if not wordforms:
return ""
else:
# Can be many possible word forms, want the first one in most cases
return wordforms[0].bmynd

def wrong_preposition_af(self, match: SimpleTree) -> None:
"""Handle a match of a suspect preposition pattern"""
# Find the offending verb phrase
Expand Down Expand Up @@ -1104,8 +1151,10 @@ def check_pp_with_place(self, match: SimpleTree) -> None:
place = match.NP.lemma
correct_preposition = IcelandicPlaces.lookup_preposition(place)
if correct_preposition is None:
# This is not a known or likely place name
return
correct_preposition = Countries.lookup_preposition(place)
if correct_preposition is None:
# This is not a known or likely place name
return
preposition = match.P.lemma
if correct_preposition == preposition:
# Correct: return
Expand Down
314 changes: 314 additions & 0 deletions src/reynir_correct/resources/countries_prep.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,314 @@
{
"Afganistan":"í",
"Albanía":"í",
"Alsír":"í",
"Andorra":"í",
"Angvilla":"í",
"Angóla":"í",
"Antigva":"á",
"Antigúa":"á",
"Antígva":"á",
"Antígva og Barbúda":"á",
"Argentína":"í",
"Armenía":"í",
"Arúba":"í",
"Aserbaídsjan":"í",
"Aserbaísjan":"í",
"Aserbædjan":"í",
"Austur-Kongó":"í",
"Austur-Tímor":"í",
"Austurríki":"í",
"Azerbaijan":"í",
"Bahamaeyjar":"á",
"Bahrain":"í",
"Bandaríkin":"í",
"Bandaríki Norður-Ameríku":"í",
"Bandaríska Samóa":"í",
"Bandarísku Jómfrúaeyjar":"á",
"Bangladess":"í",
"Barbados":"á",
"Barbadoseyjar":"á",
"Barein":"í",
"Belgía":"í",
"Belís":"í",
"Benín":"í",
"Bermúdaeyjar":"á",
"Bosnía":"í",
"Bosnía og Hersegóvína":"í",
"Botsvana":"í",
"Bouveteyja":"í",
"Brasilía":"í",
"Bresku Indlandshafseyjar":"á",
"Bresku Jómfrúaeyjar":"á",
"Bretland":"í",
"Brúnei":"í",
"Burma":"í",
"Bólivía":"í",
"Búlgaría":"í",
"Búrkína Fasó":"í",
"Búrma":"í",
"Búrúndí":"í",
"Bútan":"í",
"Caicoseyjar":"á",
"Caymaneyjar":"á",
"Chile":"í",
"Cooks-eyjar":"á",
"Cookseyjar":"á",
"Curacao":"í",
"Danmörk":"í",
"Djíbútí":"í",
"Dóminíka":"á",
"Dóminíska lýðveldið":"í",
"Egiftaland":"í",
"Egiptaland":"í",
"Egyptaland":"í",
"Eistland":"í",
"Ekvador":"í",
"El Salvador":"í",
"England":"í",
"Erítrea":"í",
"Eþíópía":"í",
"Falklandseyjar":"á",
"Filippseyjar":"á",
"Finnland":"í",
"Frakkland":"í",
"Franska Gvæjana":"í",
"Franska Pólýnesía":"í",
"Frönsku suðlægu landsvæðin":"á",
"Færeyjar":"í",
"Fídjieyjar":"á",
"Fídjíeyjar":"á",
"Fílabeinsströndin":"í",
"Gabon":"í",
"Gambía":"í",
"Gana":"í",
"Georgía":"í",
"Ghana":"í",
"Grenada":"á",
"Grenadíneyjar":"á",
"Grikkland":"í",
"Grænhöfðaeyjar":"á",
"Grænland":"á",
"Guatemala":"í",
"Guernsey":"á",
"Gvadelúpeyjar":"á",
"Gvam":"í",
"Gvatemala":"í",
"Gvæjana":"í",
"Gíbraltar":"í",
"Gínea":"í",
"Gínea-Bissá":"í",
"Haítí":"á",
"Heard og McDonaldseyjar":"í",
"Hersegóvína":"í",
"Holland":"í",
"Hondúras":"í",
"Hong Kong":"í",
"Hvíta-Rússland":"í",
"Indland":"í",
"Indónesía":"í",
"Jamaíka":"á",
"Japan":"í",
"Jemen":"í",
"Jersey":"á",
"Jólaey":"á",
"Jómfrúaeyjar":"í",
"Jórdanía":"í",
"Kambódía":"í",
"Kamerún":"í",
"Kanada":"í",
"Kanaríeyjar":"á",
"Karíbahafshluti Hollands":"í",
"Kasakstan":"í",
"Katar":"í",
"Kenía":"í",
"Kenýa":"í",
"Kirgisistan":"í",
"Kirgistan":"í",
"Kongó":"í",
"Kongó-Brazzaville":"í",
"Kongó-Kinshasa":"í",
"Kosovo":"í",
"Kostaríka":"í",
"Króatía":"í",
"Kína":"í",
"Kípur":"á",
"Kíribatí":"í",
"Kíríbatí":"í",
"Kókoseyjar":"á",
"Kólumbía":"í",
"Kómoreyjar":"á",
"Kórea":"í",
"Kúba":"á",
"Kúveit":"í",
"Kýpur":"á",
"Laos":"í",
"Lesótó":"í",
"Lettland":"í",
"Liechtenstein":"í",
"Litháen":"í",
"Líbanon":"í",
"Líbería":"í",
"Líbía":"í",
"Líbýa":"í",
"Lúxemborg":"í",
"Lýbía":"í",
"Madagaskar":"á",
"Makaó":"í",
"Malasía":"í",
"Malaví":"í",
"Malawi":"í",
"Maldíveyjar":"á",
"Malta":"á",
"Malí":"í",
"Marokkó":"í",
"Marshalleyjar":"á",
"Martiník":"á",
"Mayotte":"í",
"Mexíkó":"í",
"Mikrónesía":"í",
"Mið-Afríkulýðveldið":"í",
"Miðbaugs-Gínea":"í",
"Mjanmar":"í",
"Moldavía":"í",
"Moldóva":"í",
"Mongólía":"í",
"Montserrat":"í",
"Myanmar":"í",
"Máritanía":"í",
"Máritíus":"í",
"Míkrónesía":"í",
"Mónakó":"í",
"Mósambík":"í",
"Mön":"á",
"Namibía":"í",
"Nepal":"í",
"Nevis":"í",
"Nikaragva":"í",
"Nikaragúa":"í",
"Niue":"í",
"Noregur":"í",
"Norfolkeyja":"á",
"Norður-Kórea":"í",
"Norður-Makedónía":"í",
"Norður-Maríanaeyjar":"á",
"Norður-Írland":"í",
"Nárú":"á",
"Níger":"í",
"Nígería":"í",
"Níkaragva":"í",
"Nýja-Kaledónía":"í",
"Nýja-Sjáland":"á",
"Pakistan":"í",
"Palestína":"í",
"Palá":"í",
"Panama":"í",
"Papúa":"í",
"Papúa Nýja-Gínea":"í",
"Paragvæ":"í",
"Perú":"í",
"Pitcairn-eyjar":"á",
"Portúgal":"í",
"Páfagarður":"í",
"Páfaríki":"í",
"Páfastóll":"í",
"Pólland":"í",
"Púertó Ríkó":"í",
"Réunion":"í",
"Rúanda":"í",
"Rúmenía":"í",
"Rússland":"í",
"Saint-Martin":"á",
"Salvador":"í",
"Salómonseyjar":"á",
"Sambía":"í",
"Sameinuðu arabísku furstadæmin":"í",
"Samóa":"í",
"San Marínó":"í",
"Sankti Bartólómeusareyjar":"á",
"Sankti Helena":"á",
"Sankti Kitts og Nevis":"í",
"Sankti Lúsía":"á",
"Sankti Martin":"á",
"Sankti Pierre og Miquelon":"á",
"Sankti Vinsent og Grenadíneyjar":"á",
"Saó Tóme og Prinsípe":"í",
"Senegal":"í",
"Serbía":"í",
"Seychelles-eyjar":"á",
"Seychelleseyjar":"á",
"Simbabve":"í",
"Singapúr":"í",
"Skotland":"í",
"Slóvakía":"í",
"Slóvenía":"í",
"Smáeyjar Bandaríkjanna":"í",
"Spánn":"á",
"Sri Lanka":"á",
"Srí Lanka":"á",
"Stóra-Bretland":"í",
"Suður-Afríka":"í",
"Suður-Georgía og Suður-Sandvíkureyjar":"á",
"Suður-Kórea":"í",
"Suður-Súdan":"í",
"Suðurskautslandið":"á",
"Svalbarði og Jan Mayen":"á",
"Svartfjallaland":"í",
"Svasíland":"í",
"Sviss":"í",
"Svíþjóð":"í",
"Sádi-Arabía":"í",
"Síerra Leóne":"í",
"Síle":"í",
"Sómalía":"í",
"Súdan":"í",
"Súrínam":"í",
"Sýrland":"í",
"Tadsjikistan":"í",
"Tansanía":"í",
"Taíland":"í",
"Taívan":"í",
"Tonga":"í",
"Trínidad":"í",
"Trínidad og Tóbagó":"í",
"Tsjad":"í",
"Turks- og Caicoseyjar":"á",
"Tyrkland":"í",
"Tæland":"í",
"Tékkland":"í",
"Tímor-Leste":"í",
"Tóbagó":"í",
"Tógó":"í",
"Tókelá":"í",
"Túnis":"í",
"Túrkmenistan":"í",
"Túvalú":"í",
"Ungverjaland":"í",
"Vanúatú":"á",
"Vatikan":"í",
"Vatikanið":"í",
"Vatikanríki":"í",
"Vatíkan":"í",
"Vatíkanið":"í",
"Vatíkanríki":"í",
"Venesúela":"í",
"Vestur-Kongó":"í",
"Vestur-Sahara":"í",
"Víetnam":"í",
"Wales":"í",
"Wallis- og Fútúnaeyjar":"á",
"Álandseyjar":"á",
"Ástralía":"í",
"Írak":"í",
"Íran":"í",
"Írland":"á",
"Ísland":"á",
"Ísrael":"í",
"Ítalía":"á",
"Óman":"í",
"Úganda":"í",
"Úkraína":"í",
"Úrúgvæ":"í",
"Úsbekistan":"í",
"Þýskaland":"í"
}
Loading