Skip to content

Commit

Permalink
doplneni jmen
Browse files Browse the repository at this point in the history
  • Loading branch information
thorewi committed Nov 22, 2022
1 parent ab41c55 commit a5f42b5
Show file tree
Hide file tree
Showing 10 changed files with 4,285 additions and 4 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Full Name Analyser

- parsuje zadaný řetězec na křestní jméno, příjmení a titul před jménem a za jménem, přičemž se nenechá rozhodit více křestními jmény / příjmeními / tituly najednou, přehozeným křestním jménem a příjmením nebo zadáním jména bez diakritiky
- snaží se detekovat pohlaví, přičemž kromě databáze křestních jmen (obsahující cca 25 000 křestních jmen z webu https://www.behindthename.com/, poslední aktualizace 14. 11. 2022) bere v potaz i příjmení a unisex křestní jména (například Alex, Nikola a podobně)
- snaží se detekovat pohlaví, přičemž kromě databáze křestních jmen (obsahující cca 25 000 křestních jmen z webu https://www.behindthename.com/, doplněná o česká méně tradiční jména z webu https://www.kalendar-online.cz/ a o další jména z praxe, poslední aktualizace 22. 11. 2022) bere v potaz i příjmení a unisex křestní jména (například Alex, Nikola a podobně)
- generuje vokativ, přičemž bere v potaz zadané tituly (pro "MUDr. Jan Novák" vygeneruje "doktore")
- zaměřuje se především na správnou funkčnost pro česká a slovenská jména
- snaží se detekovat vstup, který není jménem osoby
Expand Down
2 changes: 1 addition & 1 deletion scripts/crawler/01-extract_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def extract_info(parsed):
origin.append(temp)
meaning.append(i.get_text())

for k in range(1, 83):
for k in range(1, 84):
name = []
gender = []
origin = []
Expand Down
2 changes: 1 addition & 1 deletion scripts/crawler/02-combine_into_one_pickle.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
origin = []
gender = []
meaning = []
for k in range(1, 83):
for k in range(1, 84):
file_name = "PAGES/page"+str(k)+".pickle"
print file_name
with open(file_name, "r") as f:
Expand Down
106 changes: 105 additions & 1 deletion scripts/generate_assets.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?php

$transliterator = Transliterator::create('Any-Latin; Latin-ASCII');

$maleNames = [];
$asciiMaleNames = [];
$femaleNames = [];
Expand All @@ -18,7 +20,7 @@
$lowercasedName = mb_strtolower($name);

// remove accents for alternative matching
$lowercasedAsciiName = Transliterator::create('Any-Latin; Latin-ASCII')->transliterate($lowercasedName);
$lowercasedAsciiName = $transliterator->transliterate($lowercasedName);

if (strstr($data[1], 'm') !== false) {
$maleNames[$lowercasedName] = true;
Expand All @@ -32,6 +34,108 @@
fclose($handle);
}

if (($handle = fopen(__DIR__ . "/kalendar-online/female.txt", "r")) !== FALSE) {
while (($name = fgets($handle)) !== false) {
$name = trim($name);

if (in_array($name, [
'Ota',
'Ilja',
'Vojta',
'Attila',
'Karim',
'Luka',
'Ricardo',
'Riccardo',
'Daniele',
'Mykola',
'Atila',
'Csaba',
'Ilija',
'Ivica',
'Mustafa',
'Géza',
'Renato',
'Nicolae',
'Juda',
'Honza',
])) {
continue;
}

$lowercasedName = mb_strtolower($name);

if (!isset($femaleNames[$lowercasedName])) {
$femaleNames[$lowercasedName] = true;
$asciiFemaleNames[$transliterator->transliterate($lowercasedName)] = true;
}
}

fclose($handle);
}

if (($handle = fopen(__DIR__ . "/kalendar-online/male.txt", "r")) !== FALSE) {
while (($name = fgets($handle)) !== false) {
$name = trim($name);

if (in_array($name, [
'Petr (stol.)',
'Natálie',
'Ingeborg',
'Zoe',
'Doris',
'Edith',
'Waltraud',
'Eleni',
'Janis',
'Agnes',
'Hildegard',
'Annelies',
'Ilse',
'Niki',
'Gerlinde',
'Annette',
'Anneliese',
'Esther',
'Gertrud',
'Lieselotte',
'Vasiliki',
'Dolores',
'Gertraud',
'Gudrun',
'Heidrun',
'Edit',
'Sigrid',
'Waltraut',
'Chantal',
'Elke',
'Erzsébet',
'Liv',
'Brit',
])) {
continue;
}

$lowercasedName = mb_strtolower($name);

if (!isset($maleNames[$lowercasedName])) {
$maleNames[$lowercasedName] = true;
$asciiMaleNames[$transliterator->transliterate($lowercasedName)] = true;
}
}

fclose($handle);
}

foreach (['Žanet'] as $name) {
$lowercasedName = mb_strtolower($name);

if (!isset($femaleNames[$lowercasedName])) {
$femaleNames[$lowercasedName] = true;
$asciiFemaleNames[$transliterator->transliterate($lowercasedName)] = true;
}
}

file_put_contents(__DIR__ . '/../src/assets/male_first_name.php', "<?php return " . var_export($maleNames, true) . ';');
file_put_contents(__DIR__ . '/../src/assets/female_first_name.php', "<?php return " . var_export($femaleNames, true) . ';');

Expand Down
Loading

0 comments on commit a5f42b5

Please sign in to comment.