buildDict.sh
1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#! /bin/bash
# Buduje postać binarną i pliki .cpp zawierające słowniki SGJP i Polimorf
#
# Założenia:
# • kod źródłowy Morfeusza jest w MORFEUSZ_SRC
# • słowniki źródłowe są w katalogu SRC_DICT_DIR i nazywają się ‹słownik›-‹data›.tab
# • wynik kompilacji zostanie umieszczony w katalogu DICT_DIR (który zostanie skasowany i utworzony)
# • kompilacja odbędzie się w katalogu BUILD_DIR (który zostanie skasowany i utworzony)
set -ex -o pipefail
if [ "$#" -ne 1 ]; then
echo "Exactly 1 argument needed: ‹DICT_VERSION›"
exit 1
fi
export MORFEUSZ_SRC=`pwd`/Morfeusz
export DICT_DIR=`pwd`/dicts
export SRC_DICT_DIR=$DICT_DIR
export BUILD_DIR=`pwd`/build/dicts
rm -rf $BUILD_DIR || true
mkdir -p $BUILD_DIR $DICT_DIR
cd $BUILD_DIR
cmake $MORFEUSZ_SRC
export DICT_VERSION="$1"
# argument: nazwa słownika
function buildDictionary {
set -x
DICT_NAME=$1
MAIN_DICT=$SRC_DICT_DIR/$DICT_NAME-$DICT_VERSION.tab
INPUT_DICTIONARIES="$MAIN_DICT,$MORFEUSZ_SRC/input/dodatki.tab,$MORFEUSZ_SRC/input/emoji.tab"
INPUT_TAGSET=$MORFEUSZ_SRC/input/morfeusz-sgjp.tagset
SEGMENT_RULES_FILE=$MORFEUSZ_SRC/input/segmenty.dat
ANALYZER_DICTIONARY_CPP=$DICT_DIR/$DICT_NAME-a.cpp
GENERATOR_DICTIONARY_CPP=$DICT_DIR/$DICT_NAME-s.cpp
fsabuilder/morfeusz_builder \
--input-files="$INPUT_DICTIONARIES" \
--tagset-file="$INPUT_TAGSET" \
--segments-file="$SEGMENT_RULES_FILE" \
--analyzer-cpp="$ANALYZER_DICTIONARY_CPP" \
--generator-cpp="$GENERATOR_DICTIONARY_CPP" \
--dict="$DICT_NAME" \
--dict-dir="$DICT_DIR"
echo "DONE building dictionaries" >&2
DICT_PACKAGE=morfeusz2-dictionary-${DICT_NAME}-${DICT_VERSION}.tgz
(cd $DICT_DIR; tar czvf $DICT_PACKAGE $DICT_NAME-a.dict $DICT_NAME-s.dict )
gzip "$MAIN_DICT"
}
export -f buildDictionary
{
echo "buildDictionary sgjp"
echo "buildDictionary polimorf"
} | xargs -n1 -P6 -d$'\n' bash -c