[PYTHON] 100 Language Processing Knock 2020 Chapitre 3

introduction

Language processing 100 knock 2020 a été publié, je vais donc l'essayer immédiatement.

Dans le chapitre 3, nous extrairons et formaterons les informations nécessaires à l'aide d'expressions régulières d'articles de Wikipédia.

Pour obtenir des informations sur le balisage Wikipedia, voir Aide: Référence rapide - Wikipédia, API Des informations peuvent être trouvées dans API: Image Information-MediaWiki. Cependant, comme les informations de balisage sont incomplètes, vous pouvez voir les données ou la [page Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%82%AE%E3%83] Il est nécessaire d'identifier le modèle en regardant% AA% E3% 82% B9).

Chapitre 3: Expressions régulières

Il existe un fichier jawiki-country.json.gz qui exporte les articles Wikipédia au format suivant.

20. Lecture des données JSON

Lisez le fichier JSON de l'article Wikipedia et affichez le texte de l'article sur "UK". Dans les problèmes 21-29, exécutez sur le texte de l'article extrait ici.

code


import gzip
import json

with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]
    print(eng[0]['text'])

Résultat de sortie (partie)


{{redirect|UK}}
{{redirect|Royaume-Uni|Pays honorables au printemps et à l'automne|Anglais(Printemps et automne)}}
{{Otheruses|pays européen|Cuisine locale des préfectures de Nagasaki et Kumamoto|Igirisu}}
{{Informations de base Pays
|Nom abrégé=Angleterre
︙

Notez que jawiki-country.json est JSON Lines.

21. Extraire les lignes contenant les noms des catégories

Extrayez la ligne qui déclare le nom de la catégorie dans l'article.

code


import gzip
import json
import regex as re

eng_data = {}
with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]

#Extraire le texte
texts = eng_data['text'].split('\n')

#Extraire des lignes contenant des catégories
cat_rows = list(filter(lambda e: re.search('\[\[Catégorie:|\[\[Category:', e), texts))
print('\n'.join(cat_rows))

Résultat de sortie


[[Category:Angleterre|*]]
[[Category:Pays membres du Royaume-Uni]]
[[Category:Royaume du Royaume-Uni|*]]
[[Category:Pays membres du G8]]
[[Category:Pays membres de l'Union européenne|Ancien]]
[[Category:Nation marine]]
[[Category:Pays souverain existant]]
[[Category:Pays insulaire]]
[[Category:Une nation / territoire créé en 1801]]

Help:Graphique simplifié- WikipediaAlors"[[Category:Aidez-moi|HiyoHayami]]Bienquecesoitenfait"[[Catégorie:Aidez-moi|HiyoHayami]]Ilyaaussiunmodèle(bienquecelaneseproduisepasdansunarticlebritannique).

22. Extraction du nom de la catégorie

Extrayez les noms des catégories d'articles (par nom et non par ligne).

code


import gzip
import json
import regex as re

eng_data = {}
with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]

#Extraire le texte
texts = eng_data['text'].split('\n')

#Extraire des lignes contenant des catégories
cat_rows = list(filter(lambda e: re.search('\[\[Catégorie:|\[\[Category:', e), texts))

#Extraire uniquement le nom de la catégorie de la ligne contenant la catégorie
cat_rows = list(map(lambda e: re.search('(?<=(\[\[Catégorie:|\[\[Category:)).+?(?=(\||\]))', e).group(), cat_rows))
print('\n'.join(cat_rows))

Résultat de sortie


Angleterre
Pays membres du Royaume-Uni
Royaume du Royaume-Uni
Pays membres du G8
Pays membres de l'Union européenne
Nation marine
Pays souverain existant
Pays insulaire
Une nation / territoire créé en 1801

Il existe une [re] standard (https://docs.python.org/ja/3/library/re.html) en tant que bibliothèque d'expressions régulières, mais j'obtiens une erreur «look-behind requiert un modèle de largeur fixe» dans le look-ahead. Utilisez regex pour cela.

23. Structure de la section

Affichez le nom de la section et son niveau (par exemple, 1 si "== nom de la section ==") inclus dans l'article.

code


import json
import re

eng_data = {}
with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]

#Extraire le texte
texts = eng_data['text'].split('\n')

#Extraire des lignes contenant des sections
sec_rows = list(filter(lambda e: re.search('==.+==', e), texts))

# =Calculez le niveau à partir du nombre de
sec_rows_num = list(map(lambda e: e + ':' + str(int(e.count('=') / 2 - 1)), sec_rows))

# =Et supprimez les blancs
sections = list(map(lambda e: e.replace('=', '').replace(' ', ''), sec_rows_num))
print('\n'.join(sections))

Résultat de sortie (partie)


Nom du pays:1
histoire:1
La géographie:1
Grandes villes:2
climat:2
︙

24. Extraction des références de fichiers

Extrayez tous les fichiers multimédias référencés dans l'article.

code


import json
import regex as re

eng_data = {}
with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]

#Extraire le texte
texts = eng_data['text'].split('\n')

#Extraire des lignes contenant des fichiers
file_rows = list(filter(lambda e: re.search('\[\[Fichier:|\[\[File:|\[\[file:', e), texts))

#Extraire uniquement le nom du fichier de la ligne contenant le fichier
file_rows = list(map(lambda e: re.search('(?<=(\[\[Fichier:|\[\[File:|\[\[file:)).+?(?=(\||\]))', e).group(), file_rows))
print('\n'.join(file_rows))

Résultat de sortie


Royal Coat of Arms of the United Kingdom.svg
United States Navy Band - God Save the Queen.ogg
Descriptio Prime Tabulae Europae.jpg
Lenepveu, Jeanne d'Arc au siège d'Orléans.jpg
London.bankofengland.arp.jpg
Battle of Waterloo 1815.PNG
Uk topo en.jpg
BenNevis2005.jpg
Population density UK 2011 census.png
2019 Greenwich Peninsula & Canary Wharf.jpg
Leeds CBD at night.jpg
Palace of Westminster, London - Feb 2007.jpg
Scotland Parliament Holyrood.jpg
Donald Trump and Theresa May (33998675310) (cropped).jpg
Soldiers Trooping the Colour, 16th June 2007.jpg
City of London skyline from London City Hall - Oct 2008.jpg
Oil platform in the North SeaPros.jpg
Eurostar at St Pancras Jan 2008.jpg
Heathrow Terminal 5C Iwelumo-1.jpg
UKpop.svg
Anglospeak.svg
Royal Aberdeen Children's Hospital.jpg
CHANDOS3.jpg
The Fabs.JPG
Wembley Stadium, illuminated.jpg

Help:Graphique simplifié- WikipediaAlors "[[Fichier:Wikipedia-logo-v2-ja.png|thumb|Texte explicatif]]Bien que ce soit en fait "[[File:Wikipedia-logo-v2-ja.png|thumb|Texte explicatif]]」「[[file:Wikipedia-logo-v2-ja.png|thumb|Texte explicatif]]Il y a aussi un modèle.

25. Extraction de modèles

Extrayez les noms de champs et les valeurs du modèle «informations de base» inclus dans l'article et stockez-les sous forme d'objet dictionnaire.

code


import json
import regex as re
import pprint

eng_data = {}
with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]

#Extraire le texte
text = eng_data['text']

#Extraire les informations de base
basic_text = re.search('{{Informations de base[\s\S]+?}}\n\n', text).group().replace('\n*', '*')

#Répertorier par sauts de ligne et supprimer les parties inutiles
basic_ary = basic_text.split('\n')
del basic_ary[0]
del basic_ary[-3:]

#Changer de type d'écriture
basic_dict = {}
for basic in basic_ary:
    key, *values = basic.split('=')
    key = key.replace(' ', '').replace('|', '')
    basic_dict[key] = ''.join(values).strip()
pprint.pprint(basic_dict)

Résultat de sortie (partie)


{'GDP/Homme': '36,727<ref name"imf-statistics-gdp" />',
 'Valeur du PIB': '2316,2 milliards<ref name"imf-statistics-gdp" />',
 'Valeur du PIB RFG': '2433,7 milliards<ref name"imf-statistics-gdp" />',
︙
 'Nom du premier ministre': '[[Boris Johnson]]',
 'Titre de premier ministre': '[[Premier ministre britannique|premier ministre]]',
 'Capitale': '[[Londres]](Enréalité)'}

26. Suppression du balisage en surbrillance

Au moment du traitement 25, supprimez le balisage d'accentuation MediaWiki (accentuation faible, accentuation, accentuation forte) de la valeur du modèle et convertissez-le en texte (Référence: Tableau de référence rapide du balisage).

code


import json
import regex as re
import pprint

eng_data = {}
with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]

#Extraire le texte
text = eng_data['text']

#Extraire les informations de base
basic_text = re.search('{{Informations de base[\s\S]+?}}\n\n', text).group().replace('\n*', '*')

#Répertorier par sauts de ligne et supprimer les parties inutiles
basic_ary = basic_text.split('\n')
del basic_ary[0]
del basic_ary[-3:]

#Changer de type de dictionnaire
basic_dict = {}
for basic in basic_ary:
    #Divisé en clés et valeurs
    key, *values = basic.split('=')
    #Façonner la clé
    key = key.replace(' ', '').replace('|', '')
    #Rejoignez parce que les valeurs sont répertoriées
    value = ''.join(values).strip()
    #Suppression du balisage en surbrillance
    value = value.replace("'''''", '').replace("'''", '').replace("''", '')
    basic_dict[key] = value
pprint.pprint(basic_dict)

Résultat de sortie (partie)


{'GDP/Homme': '36,727<ref name"imf-statistics-gdp" />',
 'Valeur du PIB': '2316,2 milliards<ref name"imf-statistics-gdp" />',
 'Valeur du PIB RFG': '2433,7 milliards<ref name"imf-statistics-gdp" />',
︙
'Forme établie 4': 'Changement du nom de pays actuel "Grande-Bretagne et Royaume-Uni d'Irlande du Nord"',
︙
'Nom du premier ministre': '[[Boris Johnson]]',
 'Titre de premier ministre': '[[Premier ministre britannique|premier ministre]]',
 'Capitale': '[[Londres]](Enréalité)'}

Aide: Référence rapide --Wikipedia "Différenciation des autres (oblique) ) »,« Emphase (gras) »et« Oblique et emphase »sont compris ici comme« balisage d'accentuation ».

27. Suppression des liens internes

En plus des 26 processus, supprimez le balisage du lien interne MediaWiki de la valeur du modèle et convertissez-le en texte (Référence: Tableau de référence rapide du balisage).

code


import json
import regex as re
import pprint

eng_data = {}
with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]

#Extraire le texte
text = eng_data['text']

#Extraire les informations de base
basic_text = re.search('{{Informations de base[\s\S]+?}}\n\n', text).group().replace('\n*', '*')

#Répertorier par sauts de ligne et supprimer les parties inutiles
basic_ary = basic_text.split('\n')
del basic_ary[0]
del basic_ary[-3:]

#Changer de type d'écriture
basic_dict = {}
for basic in basic_ary:
    #Divisé en clés et valeurs
    key, *values = basic.split('=')
    #Façonner la clé
    key = key.replace(' ', '').replace('|', '')
    #Rejoignez parce que les valeurs sont répertoriées
    value = ''.join(values).strip()
    #Suppression du balisage en surbrillance
    value = value.replace("'''''", '').replace("'''", '').replace("'", '')
    #Obtenir la chaîne de lien interne
    targets = re.findall('((?<=({{)).+?(?=(}})))', value)
    #Formatage de la chaîne de lien interne
    if targets:
        for target in targets:
            value = re.sub('{{.+?}}', target[0].split('|')[-1], value, count=1)
    #Obtenir la chaîne de lien interne
    targets = re.findall('((?<=(\[\[)).+?(?=(\]\])))', value)
    #Formatage de la chaîne de lien interne
    if targets:
        for target in targets:
            value = re.sub('\[\[.+?\]\]', target[0].split('|')[-1], value, count=1)
    basic_dict[key] = value
pprint.pprint(basic_dict)

Résultat de sortie (partie)


{'GDP/Homme': '36,727<ref name"imf-statistics-gdp" />',
 'Valeur du PIB': '2316,2 milliards<ref name"imf-statistics-gdp" />',
 'Valeur du PIB RFG': '2433,7 milliards<ref name"imf-statistics-gdp" />',
︙
'Forme établie 3': 'Création du Royaume-Uni de Grande-Bretagne et d'Irlande<br />(Loi commune 1800)',
︙
 'Nom du premier ministre': 'Boris Johnson',
 'Titre de premier ministre': 'premier ministre',
 'Capitale': 'Londres (virtuellement)'}

Help:Graphique simplifié- WikipediaAlors "[[Le titre de l'article|Caractère d'affichage]]Il existe des modèles tels que ", mais en réalité,"{{Le titre de l'article|Caractère d'affichage}}Il semble y avoir un modèle de ".

28. Suppression du balisage MediaWiki

En plus des 27 processus, supprimez autant que possible le balisage MediaWiki des valeurs de modèle et formatez les informations de base sur le pays.

code


import json
import regex as re
import pprint

eng_data = {}
with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]

#Extraire le texte
text = eng_data['text']

#Extraire les informations de base
basic_text = re.search('{{Informations de base[\s\S]+?}}\n\n', text).group().replace('\n*', '*')

#Répertorier par sauts de ligne et supprimer les parties inutiles
basic_ary = basic_text.split('\n')
del basic_ary[0]
del basic_ary[-3:]

#Changer de type d'écriture
basic_dict = {}
for basic in basic_ary:
    #Divisé en clés et valeurs
    key, *values = basic.split('=')
    #Façonner la clé
    key = key.replace(' ', '').replace('|', '')
    #Rejoignez parce que les valeurs sont répertoriées
    value = ''.join(values).strip()
    #Suppression du balisage en surbrillance
    value = value.replace("'''''", '').replace("'''", '').replace("'", '')
    #Obtenir la chaîne de lien interne
    targets = re.findall('((?<=({{)).+?(?=(}})))', value)
    #Formatage de la chaîne de lien interne
    if targets:
        for target in targets:
            value = re.sub('{{.+?}}', target[0].split('|')[-1], value, count=1)
    #Obtenir la chaîne de lien interne
    targets = re.findall('((?<=(\[\[)).+?(?=(\]\])))', value)
    #Formatage de la chaîne de lien interne
    if targets:
        for target in targets:
            value = re.sub('\[\[.+?\]\]', target[0].split('|')[-1], value, count=1)
    #Suppression de balises
    value = value.replace('<br />', '')
    value = re.sub('<ref.+?</ref>', '', value)
    value = re.sub('<ref.+?/>', '', value)
    basic_dict[key] = value
pprint.pprint(basic_dict)

Résultat de sortie (partie)


{'GDP/Homme': '36,727',
 'Valeur du PIB': '2316,2 milliards',
 'Valeur du PIB RFG': '2433,7 milliards',
︙
 'Nom du premier ministre': 'Boris Johnson',
 'Titre de premier ministre': 'premier ministre',
 'Capitale': 'Londres (virtuellement)'}

29. Obtenez l'URL de l'image du drapeau

Utilisez le contenu du modèle pour obtenir l'URL de l'image du drapeau. (Astuce: appelez imageinfo dans l'API MediaWiki pour convertir les références de fichiers en URL)

code


import json
import regex as re
import requests

eng_data = {}
with gzip.open('jawiki-country.json.gz', mode='rt') as f:
    jsons = []
    #Puisque les données d'origine sont JSON Lines ≠ JSON, lisez ligne par ligne
    lines = f.readlines() 
    for line in lines:
        jsons.append(json.loads(line))
    #Extrait UK
    eng = list(filter(lambda e: e['title'] == 'Angleterre', jsons))
    eng_data = eng[0]

#Extraire le texte
text = eng_data['text']

#Extraire les informations de base
basic_text = re.search('{{Informations de base[\s\S]+?}}\n\n', text).group().replace('\n*', '*')

#Répertorier par sauts de ligne et supprimer les parties inutiles
basic_ary = basic_text.split('\n')
del basic_ary[0]
del basic_ary[-3:]

#Changer de type d'écriture
basic_dict = {}
for basic in basic_ary:
    #Divisé en clés et valeurs
    key, *values = basic.split('=')
    #Façonner la clé
    key = key.replace(' ', '').replace('|', '')
    #Rejoignez parce que les valeurs sont répertoriées
    value = ''.join(values).strip()
    #Suppression du balisage en surbrillance
    value = value.replace("'''''", '').replace("'''", '').replace("'", '')
    #Obtenir la chaîne de lien interne
    targets = re.findall('((?<=({{)).+?(?=(}})))', value)
    #Formatage de la chaîne de lien interne
    if targets:
        for target in targets:
            value = re.sub('{{.+?}}', target[0].split('|')[-1], value, count=1)
    #Obtenir la chaîne de lien interne
    targets = re.findall('((?<=(\[\[)).+?(?=(\]\])))', value)
    #Formatage de la chaîne de lien interne
    if targets:
        for target in targets:
            value = re.sub('\[\[.+?\]\]', target[0].split('|')[-1], value, count=1)
    #Suppression de balises
    value = value.replace('<br />', '')
    value = re.sub('<ref.+?</ref>', '', value)
    value = re.sub('<ref.+?/>', '', value)
    basic_dict[key] = value

#Appel API
session = requests.Session()
params = {
    'action': 'query',
    'format': 'json',
    'prop': 'imageinfo',
    'titles': 'File:' + basic_dict['Image du drapeau'],
    'iiprop': 'url'
}

result = session.get('https://ja.wikipedia.org/w/api.php', params=params)
res_json = result.json()
print(res_json['query']['pages']['-1']['imageinfo'][0]['url'])

Résultat de sortie


https://upload.wikimedia.org/wikipedia/commons/a/ae/Flag_of_the_United_Kingdom.svg

en conclusion

Ce que vous pouvez apprendre au chapitre 3

Recommended Posts

100 Language Processing Knock 2020 Chapitre 1
100 Traitement du langage Knock Chapitre 1
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock 2020 Chapitre 2
100 Language Processing Knock Chapitre 2 (Python)
100 coups de traitement linguistique (2020): 38
100 traitement de la langue frapper 00 ~ 02
100 Language Processing Knock 2020 Chapitre 2: Commandes UNIX
100 Language Processing Knock 2015 Chapitre 5 Analyse des dépendances (40-49)
100 traitements de langage avec Python
100 Language Processing Knock Chapitre 1 en Python
100 Language Processing Knock 2020 Chapitre 4: Analyse morphologique
100 Language Processing Knock 2020 Chapitre 9: RNN, CNN
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 3
100 traitements de langage avec Python (chapitre 3)
100 Language Processing Knock: Chapitre 1 Mouvement préparatoire
100 Language Processing Knock 2020 Chapitre 6: Apprentissage automatique
100 Traitement du langage Knock Chapitre 4: Analyse morphologique
100 Language Processing Knock 2020 Chapitre 10: Traduction automatique (90-98)
100 Language Processing Knock 2020 Chapitre 5: Analyse des dépendances
100 Traitement du langage Knock 2020 Chapitre 7: Vecteur de mots
100 Language Processing Knock 2020 Chapitre 8: Neural Net
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 1
100 Language Processing Knock 2020 Chapitre 1: Mouvement préparatoire
100 Language Processing Knock Chapitre 1 par Python
100 Language Processing Knock 2020 Chapitre 3: Expressions régulières
100 Language Processing Knock 2015 Chapitre 4 Analyse morphologique (30-39)
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 2
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 4
100 traitements linguistiques Knock 2020 [00 ~ 39 réponse]
100 langues de traitement knock 2020 [00-79 réponse]
100 traitements linguistiques Knock 2020 [00 ~ 69 réponse]
100 coups de traitement du langage amateur: 17
100 traitements linguistiques Knock 2020 [00 ~ 49 réponse]
100 Traitement du langage Knock-52: Stemming
100 coups de traitement du langage ~ Chapitre 1
100 coups de langue amateur: 07
Le traitement de 100 langues frappe le chapitre 2 (10 ~ 19)
100 coups de traitement du langage amateur: 09
100 coups en traitement du langage amateur: 47
Traitement 100 langues knock-53: Tokenisation
100 coups de traitement du langage amateur: 97
100 traitements linguistiques Knock 2020 [00 ~ 59 réponse]
100 coups de traitement du langage amateur: 67
J'ai fait 100 traitements linguistiques Knock 2020 avec GiNZA v3.1 Chapitre 4
100 traitements de langage avec Python (chapitre 2, partie 2)
100 traitements de langage avec Python (chapitre 2, partie 1)
[Programmeur nouveau venu "100 language processing knock 2020"] Résoudre le chapitre 1
100 coups de traitement du langage avec Python 2015
100 traitement du langage Knock-51: découpage de mots
100 Language Processing Knock-58: Extraction de Taple
100 Language Processing Knock-57: Analyse des dépendances
100 Commandes de traitement du langage Knock UNIX apprises au chapitre 2
100 Traitement du langage Knock Expressions régulières apprises au chapitre 3
100 traitement linguistique knock-50: coupure de phrase
100 Language Processing Knock-25: Extraction de modèles
Traitement du langage 100 Knock-87: similitude des mots
J'ai essayé 100 traitements linguistiques Knock 2020
100 Language Processing Knock-56: analyse de co-référence
Résolution de 100 traitements linguistiques Knock 2020 (01. "Patatokukashi")
100 coups de traitement du langage amateur: Résumé