Packages
text_corpus_udhr
0.1.0
Corpus for the `Text` library from the Universal Declaration of Human Rights.
Current section
Files
Jump to
Current section
Files
lib/udhr_corpus.ex
defmodule Text.Corpus.Udhr do
@moduledoc """
"""
@behaviour Text.Corpus
@corpus_dir "./corpus/udhr"
@languages_filename "vocabulary/udhr_languages.etf"
@app_name Mix.Project.config[:app]
@languages_path Path.join(:code.priv_dir(@app_name), @languages_filename)
@corpus_index File.read!(@languages_path) |> :erlang.binary_to_term
@known_languages Map.keys(@corpus_index)
@known_vocabularies [
Text.Vocabulary.Udhr.Quadgram,
Text.Vocabulary.Udhr.Bigram,
Text.Vocabulary.Udhr.Multigram
]
@impl Text.Corpus
def known_languages do
@known_languages
end
@impl Text.Corpus
def classify(text, options \\ []) do
options = Keyword.put(options, :corpus, __MODULE__)
Text.Language.classify(text, options)
end
@impl Text.Corpus
def detect(text, options \\ []) do
options = Keyword.put(options, :corpus, __MODULE__)
Text.Language.detect(text, options)
end
@impl Text.Corpus
def known_vocabularies do
@known_vocabularies
end
@impl Text.Corpus
def language_content(language) when language in @known_languages do
udhr_corpus_dir()
|> Path.join(udhr_language_file(language))
|> File.read!()
|> String.split("---")
|> Enum.at(1)
|> String.trim()
end
@impl Text.Corpus
def normalize_text(text) do
String.replace(text, ~r/\s+/u, " ")
end
@doc false
def udhr_language_file(language) do
udhr_corpus_index()
|> Map.fetch!(language)
|> udhr_corpus_file
end
@doc false
def udhr_corpus_file(file) do
"udhr_" <> file <> ".txt"
end
@doc false
def udhr_corpus_dir do
@corpus_dir
end
@doc false
def udhr_corpus_index do
@corpus_index
end
end