"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df = pd.DataFrame([[random.choice(['ang','polski','hiszp']), np.random.geometric(0.2)] for i in range(5000) ], columns=['jezyk', 'dlugosc'])\n",
"fig = px.histogram(df, x=\"dlugosc\",facet_row='jezyk',nbins=50, hover_data=df.columns)\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"?px.histogram"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ZADANIE 1 \n",
"\n",
"(40 punktów)\n",
"\n",
"ZNAJDŹ PRZYKŁAD TEKSTÓW Z TEJ SAMEJ DOMENY 1_000_000 słów albo nawet tłumaczenie :\n",
"- język angielski \n",
"- język polski\n",
"- język z rodziny romańskich\n",
"\n",
"Proponowane narzędzia:\n",
"- nltk\n",
"- plotly express\n",
"- biblioteka collections\n",
"- spacy (niekoniecznie)\n",
"\n",
"\n",
"Dla każdego z języków:\n",
"- policz ilosć unikalnych lowercase słów (ze stemmingiem i bez)\n",
"- policz ilosć znaków\n",
"- policz ilosć unikalnych znaków\n",
"- policz ilosć zdań zdań\n",
"- policz ilosć unikalnych zdań\n",
"- podaj min, max, średnią oraz medianę ilości znaków w słowie \n",
"- podaj min, max, średnią oraz medianę ilości słów w zdaniu, znajdz najkrotsze i najdluzsze zdania\n",
"- wygeneruj word cloud (normalnie i po usunięciu stopwordów)\n",
"- wypisz 20 najbardziej popularnych słów (normalnie i po usunięciu stopwordów) (lowercase)\n",
"- wypisz 20 najbardziej popularnych bigramów (normalnie i po usunięciu stopwordów)\n",
"- narysuj wykres częstotliwości słów (histogram lub linie) w taki sposób żeby był czytelny, wypróbuj skali logarytmicznej dla osi x (ale na razie nie dla y), usuwanie słów poniżej limitu wystąpień itp.\n",
"- punkt jak wyżej, tylko dla bigramów\n",
"- punkt jak wyżej, tylko dla znaków\n",
"- narysuj wykres barplot dla części mowy (PART OF SPEECH TAGS, tylko pierwszy stopień zagłębienia)\n",
"- dla próbki 10000 zdań sprawdź jak często langdetect https://pypi.org/project/langdetect/ się myli i w jaki sposób.\n",
"- zilustruj prawo zipfa ( px.line z zaznaczonymi punktami)\n",
"- napisz wnioski (10-50 zdań)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### START ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### KONIEC ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"https://github.com/sdadas/polish-nlp-resources\n",
"\n",
"## Indeks czytelności Foga\n",
"\n",
"\n",
"Indeks czytelności Foga (Fog index) ilustruje stopień trudności tekstu. Nim wyższa liczba, tym trudniejszy jest tekst w odbiorze. Ze względu na charakterystyki różnych języków nie powinno porównywać sie tekstów pisanych w różnych językach. Index służy do porównywania różnych tekstów w tym samym języku.\n",
"\n",
"$$FOG = 0.4\\left(\\frac{liczba\\ słów}{liczba\\ zdań} + 100\\left(\\frac{liczba\\ słów\\ skomplikowanych}{liczba\\ słów}\\right) \\right)$$\n",
"\n",
"Słowa skomplikowane mogą pochodzić ze specjalnej listy, jeżeli nie ma takiej listy, to można przyjąć że są to słowa składające sie z więcej niz 3 sylab (dla języka polskiego)\n",
"\n",
"Indeks czytelności Foga jest skutecznym narzędziem przy pisaniu tekstów. Jeżeli indeks jest zbyt wysoki należy uprościć tekst. Można to zrobić przez redukcje średniej długości zdania $\\frac{liczba słów}{liczba zdań}$ oraz uproszczenie skompikowanych lub długich słów.\n",
"\n",
"## Prawo Heapsa\n",
"\n",
"Prawo heapsa to empiryczne prawo lingwistyczne. Stanowi, że liczba odmiennych słów rośnie wykładniczo (z wykładnikiem <1) względem długości dokumentu.\n",
"\n",
"Ilosć odmiennych słów $V_R$ względem całkowitej ilości słów w tekście $n$ można opisać wzorem:\n",
"\n",
"$$V_R(n) = Kn^{\\beta},$$\n",
"\n",
"gdzie $K$ i $\\beta$ to parametry wyznaczone empirycznie.\n",
"\n",
"Podobnie do Indeksu czytelności Foga nie powinno się porównywać różnych tekstów w różnych językach. Jednak porównanie tego samego tekstu przetłumaczonego na różne języki daje ich wgląd w ich charakterystykę.\n",
"\n",
"## ZADANIE 1\n",
"\n",
"(50 punktów)\n",
"\n",
"Znajdź teksty w języku polskim (mają składać sie po 5 osobnych dokumentów każdy, długości powinny być różne):\n",
"- tekst prawny\n",
"- tekst naukowy\n",
"- tekst z polskiego z powieści (np. wolne lektury)\n",
"- tekst z polskiego internetu (reddit, wykop, komentarze)\n",
"- transkrypcja tekstu mówionego\n",
"\n",
"\n",
"\n",
"ZADANIA:\n",
"- zilustruj gunning fog index (oś y) i średnią długość zdania (oś x) na jednym wykresie dla wszystkich tekstów, domeny oznacz kolorami (px.scatter), dla języka polskiego traktuj wyrazy długie jako te powyżej 3 sylab, możesz użyć https://pyphen.org/ do liczenia sylab\n",
"- zilustruj prawo Heaps'a dla wszystkich tekstów na jednym wykresie, domeny oznacz kolorami (px.scatter)\n",
"- napisz wnioski (10-50 zdań)\n",
"\n",
"\n",
"#### START ZADANIA\n",
"\n",
"#### KONIEC ZADANIA\n",
"\n",
"## WYKONANIE ZADAŃ\n",
"Zgodnie z instrukcją 01_Kodowanie_tekstu.ipynb"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"author": "Jakub Pokrywka",
"email": "kubapok@wmi.amu.edu.pl",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"lang": "pl",
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
},
"subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]",
"title": "Ekstrakcja informacji",
"year": "2021"
},
"nbformat": 4,
"nbformat_minor": 4
}