mirror of
https://github.com/bab2min/Kiwi.git
synced 2026-06-17 01:54:27 +00:00
Compare commits
No commits in common. "main" and "gh-pages" have entirely different histories.
1022 changed files with 65348 additions and 1538742 deletions
4
.buildinfo
Normal file
4
.buildinfo
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: fb2aa1236779a1b346950045e4578dd7
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
5
.gitattributes
vendored
5
.gitattributes
vendored
|
|
@ -1,5 +0,0 @@
|
|||
* text=auto
|
||||
|
||||
*.knlm filter=lfs diff=lfs merge=lfs -text
|
||||
*.morph filter=lfs diff=lfs merge=lfs -text
|
||||
*.mdl filter=lfs diff=lfs merge=lfs -text
|
||||
3
.github/FUNDING.yml
vendored
3
.github/FUNDING.yml
vendored
|
|
@ -1,3 +0,0 @@
|
|||
# These are supported funding model platforms
|
||||
|
||||
github: [bab2min]
|
||||
16
.github/ISSUE_TEMPLATE/형태소-분석-오류-제보.md
vendored
16
.github/ISSUE_TEMPLATE/형태소-분석-오류-제보.md
vendored
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
name: 형태소 분석 오류 제보
|
||||
about: Kiwi 형태소 분석기의 분석 결과에 오류가 있는 경우 이 템플릿을 사용합니다.
|
||||
title: "[분석오류]"
|
||||
labels: 형태소 분석 오류
|
||||
assignees: bab2min
|
||||
|
||||
---
|
||||
|
||||
**오류가 발견된 Kiwi 버전**: `(0.22.2)`
|
||||
**입력 문장**: `(집에 가고 시퍼)`
|
||||
**추가적인 분석 옵션**: `(continual_typos 오타 교정 사용, 방언 분석은 사용하지 않음)`
|
||||
**Kiwi의 분석 결과**: `(집/NNG 에/JKB 가/VV 고/EC 시퍼/NNG)`
|
||||
**실제 나오기를 기대한 결과**: `(집/NNG 에/JKB 가/VV 고/EC 싶/VX 어/EF)`
|
||||
|
||||
(괄호 안의 값은 예시입니다. 이 값을 지우고 제보하시고자 하는 내용을 채워 넣어주세요.)
|
||||
57
.github/workflows/arm64_centos7.yml
vendored
57
.github/workflows/arm64_centos7.yml
vendored
|
|
@ -1,57 +0,0 @@
|
|||
name: Arm64-Centos7
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build-centos:
|
||||
name: Arm64-Centos7
|
||||
runs-on: ubuntu-24.04-arm
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- name: Print CPU Info
|
||||
run: cat /proc/cpuinfo
|
||||
- uses: bab2min/run-on-arch-action@multiple-step-v2
|
||||
id: runcmd
|
||||
with:
|
||||
image: quay.io/pypa/manylinux2014_aarch64
|
||||
githubToken: ${{ github.token }}
|
||||
setup: |
|
||||
mkdir -p "${PWD}/artifacts"
|
||||
dockerRunArgs: |
|
||||
--volume "${PWD}/artifacts:/artifacts"
|
||||
multipleRun: |
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
/opt/python/cp310-cp310/bin/pip install "cmake<4"
|
||||
yum install java-1.8.0-openjdk-devel -y
|
||||
- name: Build
|
||||
run: |
|
||||
mkdir build && pushd build && /opt/python/cp310-cp310/bin/cmake -DCMAKE_BUILD_TYPE=Release -DKIWI_USE_MIMALLOC=0 -DKIWI_JAVA_BINDING=1 ..
|
||||
make -j2 && popd
|
||||
- name: Test
|
||||
run: |
|
||||
./build/test/kiwi-test
|
||||
mkdir eval_results && ./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t knlm -o eval_results/ && ./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t sbg -o eval_results/
|
||||
cp -r build /artifacts/
|
||||
cp -r eval_results /artifacts/
|
||||
- name: Benchmark
|
||||
run: |
|
||||
curl -OL https://latina.bab2min.pe.kr/_data/kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=none ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=balanced ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=neon ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
- name: Archive binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Artifacts Arm64-Centos7
|
||||
path: |
|
||||
artifacts/build/*kiwi*
|
||||
artifacts/build/test/*kiwi*
|
||||
artifacts/eval_results/*.txt
|
||||
artifacts/build/binding/java/*.jar
|
||||
52
.github/workflows/centos7.yml
vendored
52
.github/workflows/centos7.yml
vendored
|
|
@ -1,52 +0,0 @@
|
|||
name: Centos7
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build-centos7:
|
||||
name: Centos7
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- name: Print CPU Info
|
||||
run: cat /proc/cpuinfo
|
||||
- uses: bab2min/run-on-arch-action@multiple-step
|
||||
id: runcmd
|
||||
with:
|
||||
image: quay.io/pypa/manylinux2014_x86_64
|
||||
githubToken: ${{ github.token }}
|
||||
multipleRun: |
|
||||
- name: Update CMake
|
||||
run: |
|
||||
/opt/python/cp310-cp310/bin/pip install "cmake<4"
|
||||
yum install java-1.8.0-openjdk-devel.x86_64 -y
|
||||
- name: Configure Build
|
||||
run: mkdir build && cd build && /opt/python/cp310-cp310/bin/cmake -DCMAKE_BUILD_TYPE=Release -DKIWI_JAVA_BINDING=1 ..
|
||||
- name: Build
|
||||
run: cd build && make -j2
|
||||
- name: Run Unit Test
|
||||
run: ./build/test/kiwi-test
|
||||
- name: Run Java Unit Test
|
||||
run: |
|
||||
cd bindings/java
|
||||
curl -OL https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar
|
||||
curl -OL https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
|
||||
javac -cp "*:../../build/bindings/java/*:." -encoding utf-8 test/KiwiTest.java
|
||||
java -cp "*:../../build/bindings/java/*:." org.junit.runner.JUnitCore test.KiwiTest
|
||||
- name: Run Evaluator
|
||||
run: |
|
||||
mkdir eval_results
|
||||
./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t cong -o eval_results/
|
||||
./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t cong-global -o eval_results/
|
||||
- run: tar -zcvf arts.tgz build/*kiwi* build/test/*kiwi* eval_results/*.txt build/bindings/java/*.jar
|
||||
- name: Archive binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Artifacts Centos7
|
||||
path: arts.tgz
|
||||
23
.github/workflows/doxygen-publish.yml
vendored
23
.github/workflows/doxygen-publish.yml
vendored
|
|
@ -1,23 +0,0 @@
|
|||
name: Doxygen publish
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
pull_request: {}
|
||||
|
||||
jobs:
|
||||
build-doxygen-and-publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/setup-python@v2
|
||||
- run: pip install -U sphinx sphinx-sitemap breathe sphinx_rtd_theme
|
||||
- run: sudo apt update && sudo apt install doxygen
|
||||
- uses: actions/checkout@v2
|
||||
- run: cd docs && make html
|
||||
- uses: peaceiris/actions-gh-pages@v3
|
||||
if: github.ref == 'refs/heads/main'
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_dir: ./docs/_build/html
|
||||
90
.github/workflows/macos.yml
vendored
90
.github/workflows/macos.yml
vendored
|
|
@ -1,90 +0,0 @@
|
|||
name: macOS
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build-macos:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- name: "macOS 15 Arm64 + Xcode 16.0"
|
||||
os: macos-15
|
||||
arch: arm64
|
||||
compiler: xcode
|
||||
version: "16.0"
|
||||
- name: "macOS 15 + Xcode 16.0"
|
||||
os: macos-15-intel
|
||||
arch: x86_64
|
||||
compiler: xcode
|
||||
version: "16.0"
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.name }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- name: Configure Compiler
|
||||
run: |
|
||||
if [ "${{ matrix.compiler }}" = "gcc" ]; then
|
||||
echo "CC=gcc-${{ matrix.version }}" >> $GITHUB_ENV
|
||||
echo "CXX=g++-${{ matrix.version }}" >> $GITHUB_ENV
|
||||
else
|
||||
sudo xcode-select -switch /Applications/Xcode_${{ matrix.version }}.app
|
||||
echo "CC=clang" >> $GITHUB_ENV
|
||||
echo "CXX=clang++" >> $GITHUB_ENV
|
||||
fi
|
||||
- name: Configure Build
|
||||
run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DKIWI_JAVA_BINDING=1 ..
|
||||
- name: Build
|
||||
run: cd build && make -j2
|
||||
- name: Run Unit Test
|
||||
run: ./build/test/kiwi-test
|
||||
- name: Run Unit Test in Debug mode
|
||||
if: failure()
|
||||
run: |
|
||||
mkdir build_debug && cd build_debug && cmake -DCMAKE_BUILD_TYPE=Debug .. && make -j2
|
||||
cd .. && lldb -o run -o bt ./build_debug/test/kiwi-test
|
||||
- name: Run Java Unit Test
|
||||
run: |
|
||||
cd bindings/java
|
||||
curl -OL https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar
|
||||
curl -OL https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
|
||||
javac -cp "*:../../build/bindings/java/*:." -encoding utf-8 test/KiwiTest.java
|
||||
java -cp "*:../../build/bindings/java/*:." org.junit.runner.JUnitCore test.KiwiTest
|
||||
- name: Run Evaluator
|
||||
run: |
|
||||
mkdir eval_results
|
||||
./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t cong -o eval_results/
|
||||
./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t cong-global -o eval_results/
|
||||
- name: Run Benchmark
|
||||
run: |
|
||||
curl -OL https://latina.bab2min.pe.kr/_data/kowiki1000.txt
|
||||
./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=none ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=balanced ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
if [ "${{ matrix.arch }}" = "x86_64" ]; then
|
||||
KIWI_ARCH_TYPE=sse2 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=sse4_1 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=avx2 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=sse2 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out --model-type largest kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=sse4_1 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out --model-type largest kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=avx2 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out --model-type largest kowiki1000.txt
|
||||
else
|
||||
KIWI_ARCH_TYPE=neon ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=neon ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out --model-type largest kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=neon ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out --typo 6 kowiki1000.txt
|
||||
fi
|
||||
- name: Archive binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Artifacts ${{ matrix.name }}
|
||||
path: |
|
||||
build/*kiwi*
|
||||
build/test/*kiwi*
|
||||
eval_results/*.txt
|
||||
build/bindings/java/*.jar
|
||||
43
.github/workflows/ppc64le_centos7.yml
vendored
43
.github/workflows/ppc64le_centos7.yml
vendored
|
|
@ -1,43 +0,0 @@
|
|||
name: PPC64LE-Centos7
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build-centos:
|
||||
name: PPC64LE-Centos7
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- uses: bab2min/run-on-arch-action@multiple-step-v2
|
||||
id: runcmd
|
||||
with:
|
||||
image: quay.io/pypa/manylinux2014_ppc64le
|
||||
githubToken: ${{ github.token }}
|
||||
setup: |
|
||||
mkdir -p "${PWD}/artifacts"
|
||||
dockerRunArgs: |
|
||||
--volume "${PWD}/artifacts:/artifacts"
|
||||
run: |
|
||||
/opt/python/cp310-cp310/bin/pip install "cmake<4"
|
||||
yum install java-1.8.0-openjdk-devel -y
|
||||
mkdir build && pushd build && /opt/python/cp310-cp310/bin/cmake -DCMAKE_BUILD_TYPE=Release -DKIWI_USE_MIMALLOC=0 -DKIWI_JAVA_BINDING=1 ..
|
||||
make -j2 && popd
|
||||
./build/test/kiwi-test
|
||||
mkdir eval_results && ./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t knlm -o eval_results/ && ./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t sbg -o eval_results/
|
||||
cp -r build /artifacts/
|
||||
cp -r eval_results /artifacts/
|
||||
- name: Archive binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Artifacts PPC64LE-Centos7
|
||||
path: |
|
||||
artifacts/build/*kiwi*
|
||||
artifacts/build/test/*kiwi*
|
||||
artifacts/eval_results/*.txt
|
||||
artifacts/build/binding/java/*.jar
|
||||
353
.github/workflows/release.yml
vendored
353
.github/workflows/release.yml
vendored
|
|
@ -1,353 +0,0 @@
|
|||
name: Publish Release assets
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
build-centos7:
|
||||
name: Centos7
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
- name: Get release
|
||||
id: get_release
|
||||
uses: bruceadams/get-release@v1.3.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
- uses: bab2min/run-on-arch-action@multiple-step-v2
|
||||
with:
|
||||
image: quay.io/pypa/manylinux2014_x86_64
|
||||
githubToken: ${{ github.token }}
|
||||
multipleRun: |
|
||||
- name: Update CMake
|
||||
run: |
|
||||
/opt/python/cp310-cp310/bin/pip install "cmake<4"
|
||||
yum install java-1.8.0-openjdk-devel.x86_64 -y
|
||||
- name: Configure Build
|
||||
run: mkdir build && cd build && /opt/python/cp310-cp310/bin/cmake -DCMAKE_BUILD_TYPE=Release -DKIWI_JAVA_BINDING=1 ..
|
||||
- name: Build
|
||||
run: cd build && make -j2
|
||||
- run: |
|
||||
mkdir result
|
||||
cd result
|
||||
mkdir include && mkdir lib && mkdir bin
|
||||
mv ../build/libkiwi* lib/
|
||||
mv ../build/kiwi-* bin/
|
||||
mv ../build/test/kiwi-* bin/
|
||||
cp -r ../include/kiwi include/
|
||||
tar -zcvf ../asset.tgz include/ lib/ bin/
|
||||
- run: |
|
||||
mv build/bindings/java/kiwi-java*.jar kiwi-java.jar
|
||||
- name: Upload release binary
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: asset.tgz
|
||||
asset_name: kiwi_lnx_x86_64_${{ steps.get_release.outputs.tag_name }}.tgz
|
||||
asset_content_type: application/octet-stream
|
||||
- name: Upload release jar
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: kiwi-java.jar
|
||||
asset_name: kiwi-java-${{ steps.get_release.outputs.tag_name }}-lnx-x86-64.jar
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
build-macos:
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x86_64, arm64]
|
||||
runs-on: macos-15
|
||||
name: macOS - ${{ matrix.arch }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- name: Get release
|
||||
id: get_release
|
||||
uses: bruceadams/get-release@v1.3.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
- name: Configure Build
|
||||
run: |
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 -DKIWI_CPU_ARCH=${{ matrix.arch }} -DKIWI_JAVA_BINDING=1 ..
|
||||
- name: Build
|
||||
run: cd build && make -j2
|
||||
- run: |
|
||||
mkdir result
|
||||
cd result
|
||||
mkdir include && mkdir lib && mkdir bin
|
||||
mv ../build/libkiwi* lib/
|
||||
mv ../build/kiwi-* bin/
|
||||
mv ../build/test/kiwi-* bin/
|
||||
cp -r ../include/kiwi include/
|
||||
tar -zcvf ../asset.tgz include/ lib/ bin/
|
||||
- name: Upload release binary
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: asset.tgz
|
||||
asset_name: kiwi_mac_${{ matrix.arch }}_${{ steps.get_release.outputs.tag_name }}.tgz
|
||||
asset_content_type: application/octet-stream
|
||||
- run: |
|
||||
mv build/bindings/java/kiwi-java*.jar kiwi-java.jar
|
||||
- name: Upload release jar
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: kiwi-java.jar
|
||||
asset_name: kiwi-java-${{ steps.get_release.outputs.tag_name }}-mac-${{ matrix.arch }}.jar
|
||||
asset_content_type: application/octet-stream
|
||||
- if: matrix.arch == 'arm64'
|
||||
run: tar -zcvf model.tgz models/cong/base/sj.* models/cong/base/*.dict models/cong/base/combiningRule.txt models/cong/base/*.mdl
|
||||
- name: Upload release binary
|
||||
if: matrix.arch == 'arm64'
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: model.tgz
|
||||
asset_name: kiwi_model_${{ steps.get_release.outputs.tag_name }}_base.tgz
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
build-windows:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-2022]
|
||||
arch: [Win32, x64]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }} ${{ matrix.arch }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- name: Get release
|
||||
id: get_release
|
||||
uses: bruceadams/get-release@v1.2.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
- name: Init
|
||||
run: |
|
||||
mkdir build
|
||||
- name: Build
|
||||
uses: lukka/run-cmake@v3
|
||||
with:
|
||||
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
|
||||
cmakeBuildType: Release
|
||||
buildWithCMake: true
|
||||
cmakeAppendedArgs: -G"Visual Studio 17 2022" -A${{ matrix.arch }} -DKIWI_JAVA_BINDING=1
|
||||
buildWithCMakeArgs: --config Release
|
||||
buildDirectory: build
|
||||
- run: |
|
||||
mkdir result
|
||||
cd result
|
||||
mkdir include; mkdir lib; mkdir bin
|
||||
mv ..\build\Release\*.dll lib\
|
||||
mv ..\build\Release\*.exp lib\
|
||||
mv ..\build\Release\*.lib lib\
|
||||
mv ..\build\Release\*.exe bin\
|
||||
mv ..\build\test\Release\*.exe bin\
|
||||
cp -r ..\include\kiwi include\
|
||||
Compress-Archive -Path 'include', 'lib', 'bin' -DestinationPath ..\asset.zip
|
||||
- name: Upload release binary
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: asset.zip
|
||||
asset_name: kiwi_win_${{ matrix.arch }}_${{ steps.get_release.outputs.tag_name }}.zip
|
||||
asset_content_type: application/octet-stream
|
||||
- run: |
|
||||
mv build/bindings/java/kiwi-java*.jar kiwi-java.jar
|
||||
- name: Upload release jar
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: kiwi-java.jar
|
||||
asset_name: kiwi-java-${{ steps.get_release.outputs.tag_name }}-win-${{ matrix.arch }}.jar
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
build-other-arch:
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [aarch64, ppc64le]
|
||||
name: Centos7-${{ matrix.arch }}
|
||||
runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- uses: bab2min/run-on-arch-action@multiple-step-v2
|
||||
id: runcmd
|
||||
with:
|
||||
image: quay.io/pypa/manylinux2014_${{ matrix.arch }}
|
||||
githubToken: ${{ github.token }}
|
||||
setup: |
|
||||
mkdir -p "${PWD}/artifacts"
|
||||
dockerRunArgs: |
|
||||
--volume "${PWD}/artifacts:/artifacts"
|
||||
multipleRun: |
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
/opt/python/cp310-cp310/bin/pip install "cmake<4"
|
||||
yum install java-1.8.0-openjdk-devel -y
|
||||
- name: Build
|
||||
run: |
|
||||
mkdir build && pushd build && /opt/python/cp310-cp310/bin/cmake -DCMAKE_BUILD_TYPE=Release -DKIWI_USE_MIMALLOC=0 -DKIWI_JAVA_BINDING=1 ..
|
||||
make -j2 && popd
|
||||
- name: Release
|
||||
run: |
|
||||
cd build
|
||||
mkdir include && mkdir lib && mkdir bin
|
||||
mv libkiwi* lib/
|
||||
mv kiwi-* bin/
|
||||
mv test/kiwi-* bin/
|
||||
cp -r ../include/kiwi include/
|
||||
tar -zcvf /artifacts/asset.tgz include/ lib/ bin/
|
||||
mv bindings/java/kiwi-java*.jar /artifacts/kiwi-java.jar
|
||||
- name: Get release
|
||||
id: get_release
|
||||
uses: bruceadams/get-release@v1.2.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
- name: Upload release binary
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: artifacts/asset.tgz
|
||||
asset_name: kiwi_lnx_${{ matrix.arch }}_${{ steps.get_release.outputs.tag_name }}.tgz
|
||||
asset_content_type: application/octet-stream
|
||||
- name: Upload release jar
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: artifacts/kiwi-java.jar
|
||||
asset_name: kiwi-java-${{ steps.get_release.outputs.tag_name }}-lnx-${{ matrix.arch }}.jar
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
build-android:
|
||||
name: Android ARM64
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- name: Get release
|
||||
id: get_release
|
||||
uses: bruceadams/get-release@v1.3.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
- name: Setup Android NDK
|
||||
uses: nttld/setup-ndk@v1
|
||||
with:
|
||||
ndk-version: r25c
|
||||
add-to-path: true
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
- name: Setup Gradle
|
||||
uses: gradle/gradle-build-action@v2
|
||||
- name: Grant execute permission for gradlew
|
||||
run: |
|
||||
chmod +x bindings/java/gradlew
|
||||
- name: Build Android AAR
|
||||
run: |
|
||||
cd bindings/java
|
||||
./gradlew assembleRelease
|
||||
- name: Package Android AAR release
|
||||
run: |
|
||||
cd bindings/java
|
||||
# Copy the built AAR with correct name
|
||||
find build/outputs/aar/ -name "*.aar" -exec cp {} kiwi-android.aar \; 2>/dev/null || echo "AAR file not found, checking directory structure"
|
||||
echo "Contents of build/outputs/:"
|
||||
find build/outputs/ -type f 2>/dev/null || echo "build/outputs/ not found"
|
||||
|
||||
# Also create a traditional native library package for backwards compatibility
|
||||
mkdir -p result/include result/lib
|
||||
find build -name "*.so" -exec cp {} result/lib/ \; 2>/dev/null || echo "No .so files found"
|
||||
cp -r ../../include/kiwi result/include/ 2>/dev/null || echo "Include directory not found"
|
||||
cd result && tar -zcvf ../kiwi_android_arm64_compat.tgz include/ lib/ && cd ..
|
||||
- name: Upload Android AAR
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: bindings/java/kiwi-android.aar
|
||||
asset_name: kiwi-android-${{ steps.get_release.outputs.tag_name }}.aar
|
||||
asset_content_type: application/octet-stream
|
||||
- name: Upload Android native library (compatibility)
|
||||
uses: actions/upload-release-asset@v1.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.get_release.outputs.upload_url }}
|
||||
asset_path: bindings/java/kiwi_android_arm64_compat.tgz
|
||||
asset_name: kiwi_android_arm64_${{ steps.get_release.outputs.tag_name }}.tgz
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
build-emscripten:
|
||||
name: Emscripten
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- uses: mymindstorm/setup-emsdk@v14
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
- name: Build
|
||||
run: |
|
||||
cd bindings/wasm
|
||||
./build.sh
|
||||
- name: Publish to npm
|
||||
run: |
|
||||
npm install -g npm@latest
|
||||
cd bindings/wasm/package
|
||||
npm publish --provenance --access public
|
||||
- name: Build documenation
|
||||
run: |
|
||||
cd bindings/wasm/package
|
||||
npm run doc
|
||||
- name: Publish documenation
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_dir: bindings/wasm/package/doc
|
||||
destination_dir: ./kiwi-nlp
|
||||
183
.github/workflows/swift.yml
vendored
183
.github/workflows/swift.yml
vendored
|
|
@ -1,183 +0,0 @@
|
|||
name: Swift Bindings
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- 'bindings/swift/**'
|
||||
- 'include/kiwi/capi.h'
|
||||
- 'include/kiwi/Macro.h'
|
||||
- '.github/workflows/swift.yml'
|
||||
push:
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- 'bindings/swift/**'
|
||||
- 'include/kiwi/capi.h'
|
||||
- 'include/kiwi/Macro.h'
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
swift-build-test:
|
||||
name: Swift Build and Test
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
|
||||
- name: Select Xcode
|
||||
run: sudo xcode-select -switch /Applications/Xcode.app
|
||||
|
||||
- name: Swift Version
|
||||
run: swift --version
|
||||
|
||||
- name: Build C++ Library
|
||||
run: |
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release \
|
||||
-DKIWI_BUILD_DYNAMIC=OFF \
|
||||
-DKIWI_BUILD_CLI=OFF \
|
||||
-DKIWI_BUILD_EVALUATOR=OFF \
|
||||
-DKIWI_BUILD_MODEL_BUILDER=OFF \
|
||||
-DKIWI_BUILD_TEST=OFF \
|
||||
-DKIWI_JAVA_BINDING=OFF \
|
||||
-DKIWI_USE_MIMALLOC=ON \
|
||||
..
|
||||
make -j$(sysctl -n hw.ncpu)
|
||||
|
||||
- name: Verify Static Library
|
||||
run: |
|
||||
if [ ! -f build/libkiwi_static.a ]; then
|
||||
echo "Error: libkiwi_static.a not found"
|
||||
exit 1
|
||||
fi
|
||||
file build/libkiwi_static.a
|
||||
ls -lh build/libkiwi_static.a
|
||||
|
||||
- name: Build Swift Package
|
||||
run: |
|
||||
cd bindings/swift
|
||||
swift build -v -Xlinker -L../../build -Xlinker -lkiwi_static
|
||||
|
||||
- name: Run Swift Tests
|
||||
run: |
|
||||
cd bindings/swift
|
||||
swift test -v -Xlinker -L../../build -Xlinker -lkiwi_static
|
||||
|
||||
swift-xcframework:
|
||||
name: Build XCFramework
|
||||
runs-on: macos-latest
|
||||
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
|
||||
- name: Setup Xcode
|
||||
run: sudo xcode-select -switch /Applications/Xcode.app
|
||||
|
||||
- name: Build XCFramework
|
||||
run: |
|
||||
chmod +x bindings/swift/scripts/build-xcframework.sh
|
||||
bindings/swift/scripts/build-xcframework.sh
|
||||
|
||||
- name: Verify XCFramework
|
||||
run: |
|
||||
if [ ! -d bindings/swift/xcframework/Kiwi.xcframework ]; then
|
||||
echo "Error: Kiwi.xcframework not found"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -f bindings/swift/xcframework/Kiwi.xcframework.zip ]; then
|
||||
echo "Error: Kiwi.xcframework.zip not found"
|
||||
exit 1
|
||||
fi
|
||||
ls -lh bindings/swift/xcframework/
|
||||
|
||||
- name: Calculate Checksum
|
||||
run: |
|
||||
cd bindings/swift/xcframework
|
||||
swift package compute-checksum Kiwi.xcframework.zip > checksum.txt
|
||||
echo "Checksum: $(cat checksum.txt)"
|
||||
|
||||
- name: Archive XCFramework
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Kiwi-xcframework
|
||||
path: |
|
||||
bindings/swift/xcframework/Kiwi.xcframework.zip
|
||||
bindings/swift/xcframework/checksum.txt
|
||||
|
||||
swift-release:
|
||||
name: Release XCFramework
|
||||
runs-on: macos-latest
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
|
||||
- name: Setup Xcode
|
||||
run: sudo xcode-select -switch /Applications/Xcode.app
|
||||
|
||||
- name: Build XCFramework
|
||||
run: |
|
||||
chmod +x bindings/swift/scripts/build-xcframework.sh
|
||||
bindings/swift/scripts/build-xcframework.sh
|
||||
|
||||
- name: Calculate Checksum
|
||||
id: checksum
|
||||
run: |
|
||||
cd bindings/swift/xcframework
|
||||
CHECKSUM=$(swift package compute-checksum Kiwi.xcframework.zip)
|
||||
echo "checksum=$CHECKSUM" >> $GITHUB_OUTPUT
|
||||
echo "Checksum: $CHECKSUM"
|
||||
|
||||
- name: Upload to Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
files: |
|
||||
bindings/swift/xcframework/Kiwi.xcframework.zip
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Output SPM Configuration
|
||||
run: |
|
||||
TAG=${GITHUB_REF#refs/tags/}
|
||||
echo ""
|
||||
echo "=== Swift Package Manager Configuration ==="
|
||||
echo ""
|
||||
echo "Add this to your Package.swift:"
|
||||
echo ""
|
||||
echo ".binaryTarget("
|
||||
echo " name: \"CKiwi\","
|
||||
echo " url: \"https://github.com/${{ github.repository }}/releases/download/$TAG/Kiwi.xcframework.zip\","
|
||||
echo " checksum: \"${{ steps.checksum.outputs.checksum }}\""
|
||||
echo ")"
|
||||
|
||||
swift-linux-check:
|
||||
name: Swift Linux Compatibility Check
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
|
||||
- name: Setup Swift
|
||||
uses: swift-actions/setup-swift@v2
|
||||
with:
|
||||
swift-version: "5.10"
|
||||
|
||||
- name: Check Package Format
|
||||
run: |
|
||||
cd bindings/swift
|
||||
swift package diagnose || true
|
||||
echo "Note: Linux build may not work without modifications, but checking package structure"
|
||||
81
.github/workflows/ubuntu.yml
vendored
81
.github/workflows/ubuntu.yml
vendored
|
|
@ -1,81 +0,0 @@
|
|||
name: Ubuntu
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build-ubuntu:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- name: "Ubuntu 22.04 + gcc-11"
|
||||
os: ubuntu-22.04
|
||||
compiler: gcc
|
||||
version: "11"
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.name }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- name: Configure Compiler
|
||||
run: |
|
||||
if [ "${{ matrix.compiler }}" = "gcc" ]; then
|
||||
echo "CC=gcc-${{ matrix.version }}" >> $GITHUB_ENV
|
||||
echo "CXX=g++-${{ matrix.version }}" >> $GITHUB_ENV
|
||||
else
|
||||
echo "CC=clang-${{ matrix.version }}" >> $GITHUB_ENV
|
||||
echo "CXX=clang++-${{ matrix.version }}" >> $GITHUB_ENV
|
||||
fi
|
||||
- name: Configure Build
|
||||
run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DKIWI_JAVA_BINDING=1 ..
|
||||
- name: Print CPU Info
|
||||
run: cat /proc/cpuinfo
|
||||
- name: Build
|
||||
run: cd build && make -j1
|
||||
- name: Run Unit Test
|
||||
run: ./build/test/kiwi-test
|
||||
- name: Run Unit Test in Debug mode
|
||||
if: failure()
|
||||
run: |
|
||||
mkdir build_debug && cd build_debug && cmake -DCMAKE_BUILD_TYPE=Debug .. && make -j2
|
||||
cd .. && gdb -ex run -ex bt ./build_debug/test/kiwi-test
|
||||
- name: Run Java Unit Test
|
||||
run: |
|
||||
cd bindings/java
|
||||
curl -OL https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar
|
||||
curl -OL https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
|
||||
javac -cp "*:../../build/bindings/java/*:." -encoding utf-8 test/KiwiTest.java
|
||||
java -cp "*:../../build/bindings/java/*:." org.junit.runner.JUnitCore test.KiwiTest
|
||||
- name: Run Evaluator
|
||||
run: |
|
||||
mkdir eval_results
|
||||
./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t cong -o eval_results/
|
||||
./build/kiwi-evaluator -m ./models/cong/base --morph eval_data/*.txt -t cong-global -o eval_results/
|
||||
- name: Run Benchmark
|
||||
run: |
|
||||
curl -OL https://latina.bab2min.pe.kr/_data/kowiki1000.txt
|
||||
./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=none ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=balanced ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=sse2 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=sse4_1 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=avx2 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=avx512vnni ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=sse2 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out --model-type largest kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=sse4_1 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out --model-type largest kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=avx2 ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out --model-type largest kowiki1000.txt
|
||||
KIWI_ARCH_TYPE=avx512vnni ./build/kiwi-cli-* -m ./models/cong/base -e -o test.out --model-type largest kowiki1000.txt
|
||||
- name: Archive binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Artifacts ${{ matrix.name }}
|
||||
path: |
|
||||
build/*kiwi*
|
||||
build/test/*kiwi*
|
||||
eval_results/*.txt
|
||||
build/bindings/java/*.jar
|
||||
50
.github/workflows/wasm.yml
vendored
50
.github/workflows/wasm.yml
vendored
|
|
@ -1,50 +0,0 @@
|
|||
name: WASM Bindings
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- 'bindings/wasm/**'
|
||||
- 'src/**'
|
||||
- 'include/**'
|
||||
- 'CMakeLists.txt'
|
||||
- '.github/workflows/wasm.yml'
|
||||
push:
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- 'bindings/wasm/**'
|
||||
- 'src/**'
|
||||
- 'include/**'
|
||||
- 'CMakeLists.txt'
|
||||
- '.github/workflows/wasm.yml'
|
||||
|
||||
jobs:
|
||||
wasm-build-test:
|
||||
name: WASM Build and Test
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '20'
|
||||
|
||||
- name: Setup Emscripten
|
||||
uses: mymindstorm/setup-emsdk@v14
|
||||
with:
|
||||
version: '3.1.64' # Latest stable or specific version
|
||||
|
||||
- name: Build WASM
|
||||
run: |
|
||||
chmod +x bindings/wasm/build.sh
|
||||
bindings/wasm/build.sh
|
||||
|
||||
- name: Run WASM Unit Test
|
||||
run: |
|
||||
cd bindings/wasm/package
|
||||
npm run test
|
||||
101
.github/workflows/windows.yml
vendored
101
.github/workflows/windows.yml
vendored
|
|
@ -1,101 +0,0 @@
|
|||
name: Windows
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build-windows:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-2022]
|
||||
arch: [Win32, x64]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: ${{ matrix.os }} ${{ matrix.arch }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
lfs: true
|
||||
- name: Init
|
||||
run: |
|
||||
mkdir build
|
||||
- name: Print CPU Info
|
||||
run: bash -c "cat /proc/cpuinfo"
|
||||
- name: Build
|
||||
uses: lukka/run-cmake@v3
|
||||
with:
|
||||
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
|
||||
cmakeBuildType: Release
|
||||
buildWithCMake: true
|
||||
#cmakeGenerator: VS16Win${{ matrix.arch }}
|
||||
cmakeAppendedArgs: -G"Visual Studio 17 2022" -A${{ matrix.arch }} -DKIWI_JAVA_BINDING=1
|
||||
buildWithCMakeArgs: --config Release
|
||||
buildDirectory: build
|
||||
- name: Run Evaluator
|
||||
run: |
|
||||
mkdir eval_results
|
||||
.\build\Release\kiwi-evaluator.exe -m .\models\cong\base -t cong --morph (Get-ChildItem eval_data\*.txt | Select-Object -Expand FullName) -o eval_results\
|
||||
.\build\Release\kiwi-evaluator.exe -m .\models\cong\base -t cong-global --morph (Get-ChildItem eval_data\*.txt | Select-Object -Expand FullName) -o eval_results\
|
||||
- name: Archive binaries
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Artifacts ${{ matrix.os }} ${{ matrix.arch }}bit
|
||||
path: |
|
||||
build\Release\*kiwi*
|
||||
build\test\Release\*kiwi*
|
||||
eval_results\*.txt
|
||||
build\bindings\java\*.jar
|
||||
- name: Run Unit Test
|
||||
if: matrix.arch == 'x64'
|
||||
run: .\build\test\Release\kiwi-test.exe
|
||||
- name: Run Java Unit Test
|
||||
if: matrix.arch == 'x64'
|
||||
run: |
|
||||
cd bindings/java
|
||||
curl -OL https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar
|
||||
curl -OL https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
|
||||
javac -cp "*;../../build/bindings/java/*;." -encoding utf-8 test/KiwiTest.java
|
||||
java -cp "*;../../build/bindings/java/*;." org.junit.runner.JUnitCore test.KiwiTest
|
||||
- name: Run Benchmark
|
||||
run: |
|
||||
curl -OL https://latina.bab2min.pe.kr/_data/kowiki1000.txt
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'none'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'balanced'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'sse2'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
if ( '${{ matrix.arch }}' -eq 'x64' )
|
||||
{
|
||||
$env:KIWI_ARCH_TYPE = 'sse4_1'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'avx2'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'avx512bw'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
}
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out --model-type largest kowiki1000.txt
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out --typo 6 kowiki1000.txt
|
||||
if ( '${{ matrix.arch }}' -eq 'x64' )
|
||||
{
|
||||
$env:KIWI_ARCH_TYPE = 'sse2'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'sse4_1'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'avx2'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'avx512vnni'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'sse2'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out --model-type largest kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'sse4_1'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out --model-type largest kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'avx2'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out --model-type largest kowiki1000.txt
|
||||
$env:KIWI_ARCH_TYPE = 'avx512vnni'
|
||||
.\build\Release\kiwi-cli-*.exe -m .\models\cong\base -e -o test.out --model-type largest kowiki1000.txt
|
||||
}
|
||||
355
.gitignore
vendored
355
.gitignore
vendored
|
|
@ -1,355 +0,0 @@
|
|||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
[Xx]64/
|
||||
[Xx]86/
|
||||
[Bb]uild/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# DNX
|
||||
project.lock.json
|
||||
artifacts/
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
|
||||
# TODO: Un-comment the next line if you do not want to checkin
|
||||
# your web deploy settings because they may include unencrypted
|
||||
# passwords
|
||||
#*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/packages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/packages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignoreable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directory
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
[Ss]tyle[Cc]op.*
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
node_modules/
|
||||
orleans.codegen.cs
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# LightSwitch generated files
|
||||
GeneratedArtifacts/
|
||||
ModelManifest.xml
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
/ModelGenerator/ML_spo.txt
|
||||
/ModelGenerator/ML_lit.txt
|
||||
/KiwiLibrary/wrongs.txt
|
||||
/KiwiLibrary/wrongs.txt
|
||||
/KiwiRunLinux/readme
|
||||
/KiwiRunLinux/readme/stylesheet.css
|
||||
/KiwiRunLinux/readme/readme.html
|
||||
/KiwiRunLinux/readme/images/postbuild.png
|
||||
/KiwiRunLinux/readme/images/OutputTypes.gif
|
||||
/KiwiRunLinux/readme/images/ManageConnections.gif
|
||||
/KiwiRunLinux/readme/images/linker.png
|
||||
/KiwiRunLinux/readme/images/firstconnection.png
|
||||
/KiwiRunLinux/readme/images/debuggerexport.png
|
||||
/KiwiRunLinux/readme/images/ChangeRemote.gif
|
||||
/KiwiRunLinux/readme/images/ArchOptions.gif
|
||||
*.pickle
|
||||
/ModelGenerator/distModel_5.txt
|
||||
/ModelGenerator/distModel.txt
|
||||
/KiwiTester/wrongs19s.txt
|
||||
/KiwiTester/wrongs18s.txt
|
||||
/KiwiTester/wrongs17s.txt
|
||||
/KiwiTester/wrongs12s.txt
|
||||
/KiwiTester/wrongs11s.txt
|
||||
/TestSets/t.txt
|
||||
/KiwiGui/KiwiGui.exe
|
||||
/KiwiGui/bin_x86
|
||||
/KiwiGui/bin_x64
|
||||
/ModelGenerator/fullmodel3.txt
|
||||
/ModelGenerator/fullmodelNew.txt
|
||||
/ModelGenerator/fullmodel_.txt
|
||||
/ModelGenerator/ML_namu.txt
|
||||
/ModelGenerator/ML_namu_.txt
|
||||
/ModelGenerator/ML_namu_r.txt
|
||||
/ModelGenerator/mg2.py
|
||||
/ModelGenerator/namuWikiParser.py
|
||||
/ModelGenerator/OKModel.txt
|
||||
/ModelGenerator/unk.xlsx
|
||||
/ModelGenerator/vEndsU.txt
|
||||
/ModelGenerator/precombinedV2.txt
|
||||
/ModelGenerator/morpheme.bin
|
||||
/ModelGenerator/langMdl.bin
|
||||
/ModelGenerator/fullmodelV2.txt
|
||||
/ModelGenerator/fullmodelCnt.txt
|
||||
/ModelGenerator/combineRuleV2.txt
|
||||
/ModelGenerator/combinedV2.txt
|
||||
/KiwiTester/wrongsV217s.txt
|
||||
/ModelGenerator/VAAll.txt
|
||||
/KiwiTester/wrongsV218s.txt
|
||||
/KiwiTester/test.txt
|
||||
*.pyd
|
||||
/KiwiTester/extracted_xaf.txt
|
||||
/KiwiTester/extracted_xae.txt
|
||||
/KiwiTester/extracted_xad.txt
|
||||
/KiwiTester/extracted_xac.txt
|
||||
/KiwiTester/extracted_xab.txt
|
||||
/KiwiTester/extracted_xaa.txt
|
||||
/KiwiTester/extracted_xa0_cohesion2.txt
|
||||
/KiwiTester/extracted_xa0_cohesion.txt
|
||||
/KiwiTester/extracted_xa0.txt
|
||||
/KiwiTester/extracted_x0_cohesion2.txt
|
||||
/KiwiTester/extracted_x0_cohesion.txt
|
||||
/KiwiTester/extracted_x0.txt
|
||||
/KiwiTester/extracted_namus.txt
|
||||
/KiwiTester/dict_namu.txt
|
||||
/ModelGenerator/result.txt
|
||||
/ModelGenerator/kiwipiepyTest.py
|
||||
/KiwiTester/dict_namu2.txt
|
||||
/KiwiGui/KiwiGui_v0.5.zip
|
||||
/KiwiTester/extracted_kowiki.txt.txt
|
||||
/KiwiTester/dict_namu3.txt
|
||||
*.zip
|
||||
/KiwiTester/performances.txt
|
||||
/Binary
|
||||
/KiwiCTester/longText.txt
|
||||
/eval_result
|
||||
.idea/
|
||||
__pycache__/
|
||||
|
||||
/CMakeCache.txt
|
||||
/cmake_install.cmake
|
||||
/CMakeFiles/
|
||||
/Makefile
|
||||
/My Advisor Results - evaluator
|
||||
/ModelGenerator/compositeHangul.py
|
||||
/ModelGenerator/30_sj.morph
|
||||
/ModelGenerator/30_sj.lang
|
||||
/mimalloc
|
||||
/data/
|
||||
include/btree/
|
||||
.vscode/
|
||||
docs/html
|
||||
docs/latex
|
||||
docs/_build
|
||||
cmake-build-*/
|
||||
libs/
|
||||
model_s/
|
||||
model_xs/
|
||||
ModelGenerator/*
|
||||
!ModelGenerator/combiningRule.txt
|
||||
!ModelGenerator/morphemes.txt
|
||||
!ModelGenerator/extractMorphemeList.py
|
||||
!ModelGenerator/convertModuToKiwi.py
|
||||
!ModelGenerator/skipbigram.mdl
|
||||
!ModelGenerator/*.dict
|
||||
models/
|
||||
*.vcxproj.filters
|
||||
*.vsps
|
||||
*.class
|
||||
*.jar
|
||||
*.dll
|
||||
CMakeFiles/
|
||||
Makefile
|
||||
*.cmake
|
||||
26
.gitmodules
vendored
26
.gitmodules
vendored
|
|
@ -1,26 +0,0 @@
|
|||
[submodule "third_party/tclap"]
|
||||
path = third_party/tclap
|
||||
url = https://github.com/mirror/tclap
|
||||
[submodule "third_party/mimalloc"]
|
||||
path = third_party/mimalloc
|
||||
url = https://github.com/microsoft/mimalloc
|
||||
[submodule "third_party/cpp-btree"]
|
||||
path = third_party/cpp-btree
|
||||
url = https://github.com/bab2min/cpp-btree
|
||||
branch = improve-mscv-compatibility
|
||||
[submodule "third_party/googletest"]
|
||||
path = third_party/googletest
|
||||
url = https://github.com/google/googletest
|
||||
branch = master
|
||||
[submodule "third_party/cpuinfo"]
|
||||
path = third_party/cpuinfo
|
||||
url = https://github.com/pytorch/cpuinfo
|
||||
[submodule "third_party/eigen"]
|
||||
path = third_party/eigen
|
||||
url = https://gitlab.com/libeigen/eigen
|
||||
[submodule "third_party/json"]
|
||||
path = third_party/json
|
||||
url = https://github.com/nlohmann/json
|
||||
[submodule "third_party/streamvbyte"]
|
||||
path = third_party/streamvbyte
|
||||
url = https://github.com/fast-pack/streamvbyte
|
||||
376
CMakeLists.txt
376
CMakeLists.txt
|
|
@ -1,376 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.12)
|
||||
|
||||
project(kiwi VERSION 0.23.2 DESCRIPTION "Kiwi, Korean Intelligent Word Identifier")
|
||||
|
||||
set ( CMAKE_CXX_STANDARD 17 )
|
||||
set ( CMAKE_VERBOSE_MAKEFILE true )
|
||||
|
||||
option(KIWI_USE_MIMALLOC "Use mimalloc for faster memory allocation" ON)
|
||||
option(KIWI_USE_CPUINFO "Use cpuinfo for dynamic CPU dispatching" ON)
|
||||
option(KIWI_STATIC_WITHOUT_MT "Use /MT Option in building kiwi_static" OFF)
|
||||
option(KIWI_BUILD_DYNAMIC "Build dynamic library" ON)
|
||||
option(KIWI_BUILD_CLI "Build CLI tool" ON)
|
||||
option(KIWI_BUILD_EVALUATOR "Build Evaluator" ON)
|
||||
option(KIWI_BUILD_MODEL_BUILDER "Build Model Builder" ON)
|
||||
option(KIWI_BUILD_TEST "Build Test sets" ON)
|
||||
option(KIWI_JAVA_BINDING "Build Java binding" OFF)
|
||||
set(KIWI_CPU_ARCH "" CACHE STRING "Set architecture type for macOS")
|
||||
|
||||
if (NOT CMAKE_BUILD_TYPE)
|
||||
if ("${CMAKE_BINARY_DIR}" MATCHES ".*(D|d)ebug$")
|
||||
message(STATUS "No build type selected, default to: Debug")
|
||||
set(CMAKE_BUILD_TYPE "Debug")
|
||||
else()
|
||||
message(STATUS "No build type selected, default to: Release")
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT KIWI_CPU_ARCH)
|
||||
if (EMSCRIPTEN)
|
||||
set(KIWI_CPU_ARCH "wasm")
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)"
|
||||
OR "${ANDROID_ABI}" STREQUAL "x86_64")
|
||||
set(KIWI_CPU_ARCH "x86_64")
|
||||
elseif (HOST_ARCHITECTURE MATCHES "^arm64"
|
||||
OR CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|aarch64)"
|
||||
OR "${ANDROID_ABI}" STREQUAL "arm64-v8a")
|
||||
set(KIWI_CPU_ARCH "arm64")
|
||||
else()
|
||||
set(KIWI_CPU_ARCH "other")
|
||||
endif()
|
||||
set(KIWI_CPU_ARCH "${KIWI_CPU_ARCH}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
|
||||
if (KIWI_USE_CPUINFO AND
|
||||
(MSVC OR
|
||||
((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 11)
|
||||
)
|
||||
)
|
||||
set ( AVX_VNNI_SUPPORTED ON )
|
||||
else()
|
||||
set ( AVX_VNNI_SUPPORTED OFF )
|
||||
endif()
|
||||
|
||||
if(APPLE AND NOT CMAKE_OSX_ARCHITECTURES)
|
||||
set(CMAKE_OSX_ARCHITECTURES "${KIWI_CPU_ARCH}")
|
||||
endif()
|
||||
|
||||
set ( CORE_SRCS
|
||||
src/ArchUtils.cpp
|
||||
src/Combiner.cpp
|
||||
src/CoNgramModel.cpp
|
||||
src/Dataset.cpp
|
||||
src/Form.cpp
|
||||
src/FeatureTestor.cpp
|
||||
src/FileUtils.cpp
|
||||
src/Joiner.cpp
|
||||
src/Kiwi.cpp
|
||||
src/KiwiBuilder.cpp
|
||||
src/Knlm.cpp
|
||||
src/KTrie.cpp
|
||||
src/PatternMatcher.cpp
|
||||
src/search.cpp
|
||||
src/ScriptType.cpp
|
||||
src/SkipBigramModel.cpp
|
||||
src/SubstringExtractor.cpp
|
||||
src/SwTokenizer.cpp
|
||||
src/TagUtils.cpp
|
||||
src/TypoTransformer.cpp
|
||||
src/UnicodeCase.cpp
|
||||
src/UnkFormScorer.cpp
|
||||
src/Utils.cpp
|
||||
src/WordDetector.cpp
|
||||
src/archImpl/none.cpp
|
||||
)
|
||||
|
||||
|
||||
if(KIWI_USE_MIMALLOC)
|
||||
message(STATUS "Use mimalloc allocators")
|
||||
set ( ADDITIONAL_FLAGS "-DKIWI_USE_MIMALLOC" )
|
||||
include_directories( third_party/mimalloc/include )
|
||||
set ( CORE_SRCS "${CORE_SRCS}"
|
||||
third_party/mimalloc/src/static.c
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
include_directories( include/ )
|
||||
include_directories( third_party/tclap/include )
|
||||
include_directories( third_party/cpp-btree )
|
||||
include_directories( third_party/eigen )
|
||||
include_directories( third_party/json/include )
|
||||
include_directories( third_party/streamvbyte/include )
|
||||
add_subdirectory( third_party/streamvbyte )
|
||||
set ( STREAMVBYTE_OBJECTS
|
||||
$<TARGET_OBJECTS:streamvbyte>
|
||||
)
|
||||
if(KIWI_USE_CPUINFO)
|
||||
message(STATUS "Use cpuinfo")
|
||||
include_directories( third_party/cpuinfo/include )
|
||||
|
||||
set(CPUINFO_LIBRARY_TYPE "shared" CACHE STRING "")
|
||||
set(CPUINFO_BUILD_TOOLS OFF CACHE BOOL "")
|
||||
set(CPUINFO_BUILD_UNIT_TESTS OFF CACHE BOOL "")
|
||||
set(CPUINFO_BUILD_MOCK_TESTS OFF CACHE BOOL "")
|
||||
set(CPUINFO_BUILD_BENCHMARKS OFF CACHE BOOL "")
|
||||
add_subdirectory( third_party/cpuinfo )
|
||||
|
||||
set ( ADDITIONAL_FLAGS ${ADDITIONAL_FLAGS} "-DKIWI_USE_CPUINFO" )
|
||||
|
||||
if(MSVC)
|
||||
target_compile_options("cpuinfo" PUBLIC
|
||||
/MT
|
||||
)
|
||||
target_compile_options("cpuinfo_internals" PUBLIC
|
||||
/MT
|
||||
)
|
||||
endif()
|
||||
|
||||
set ( CPUINFO_OBJECTS_STATIC
|
||||
$<TARGET_OBJECTS:cpuinfo_internals>
|
||||
)
|
||||
set ( CPUINFO_OBJECTS_SHARED
|
||||
$<TARGET_OBJECTS:cpuinfo>
|
||||
)
|
||||
endif()
|
||||
|
||||
if (AVX_VNNI_SUPPORTED)
|
||||
message(STATUS "AVX-VNNI is supported")
|
||||
set ( ADDITIONAL_FLAGS ${ADDITIONAL_FLAGS} "-DKIWI_AVX_VNNI_SUPPORTED" )
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set ( CMAKE_C_FLAGS_DEBUG "-DDEBUG -DC_FLAGS -Zi -Od /utf-8 /bigobj" )
|
||||
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}" )
|
||||
|
||||
set ( CMAKE_C_FLAGS_RELEASE "-DNDEBUG -DRELEASE -DC_FLAGS -O2 -Oi -Gy /utf-8 /bigobj -DKIWI_USE_BTREE" )
|
||||
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" )
|
||||
|
||||
set ( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} -Zi")
|
||||
set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
set ( CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELEASE}" )
|
||||
else()
|
||||
if(NOT ANDROID)
|
||||
link_libraries ( pthread )
|
||||
endif()
|
||||
|
||||
set ( CMAKE_C_FLAGS_DEBUG "-DDEBUG -DC_FLAGS -g3 -O0" )
|
||||
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}" )
|
||||
set ( CMAKE_EXE_LINKER_FLAGS_DEBUG "-DDEBUG -DLINKER_FLAGS" )
|
||||
|
||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
||||
|
||||
set ( CMAKE_C_FLAGS_RELEASE "-DNDEBUG -DRELEASE -DC_FLAGS -O3 -DKIWI_USE_BTREE" )
|
||||
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" )
|
||||
set ( CMAKE_EXE_LINKER_FLAGS_RELEASE "-DRELEASE -DLINKER_FLAGS" )
|
||||
|
||||
set ( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} -g")
|
||||
set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
set ( CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELEASE}" )
|
||||
|
||||
if (APPLE)
|
||||
set ( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wno-unqualified-std-cast-call" )
|
||||
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wno-unqualified-std-cast-call" )
|
||||
set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Wno-unqualified-std-cast-call" )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (KIWI_CPU_ARCH MATCHES "x86_64")
|
||||
message("Compiling for x86_64")
|
||||
set( CORE_SRCS
|
||||
${CORE_SRCS}
|
||||
src/archImpl/sse2.cpp
|
||||
src/archImpl/sse4_1.cpp
|
||||
)
|
||||
if (KIWI_USE_CPUINFO)
|
||||
set( CORE_SRCS
|
||||
${CORE_SRCS}
|
||||
src/archImpl/avx2.cpp
|
||||
src/archImpl/avx512bw.cpp
|
||||
src/archImpl/avx512vnni.cpp
|
||||
)
|
||||
# If AVX-VNNI is supported (MSVC, GCC 11+ or Clang 11+)
|
||||
if (AVX_VNNI_SUPPORTED)
|
||||
set( CORE_SRCS
|
||||
${CORE_SRCS}
|
||||
src/archImpl/avx_vnni.cpp
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set_source_files_properties(src/archImpl/sse2.cpp PROPERTIES COMPILE_FLAGS "/arch:SSE2")
|
||||
set_source_files_properties(src/archImpl/sse4_1.cpp PROPERTIES COMPILE_FLAGS "/arch:SSE2")
|
||||
if (KIWI_USE_CPUINFO)
|
||||
set_source_files_properties(src/archImpl/avx2.cpp PROPERTIES COMPILE_FLAGS "/arch:AVX2")
|
||||
set_source_files_properties(src/archImpl/avx_vnni.cpp PROPERTIES COMPILE_FLAGS "/arch:AVX2")
|
||||
set_source_files_properties(src/archImpl/avx512bw.cpp PROPERTIES COMPILE_FLAGS "/arch:AVX512")
|
||||
set_source_files_properties(src/archImpl/avx512vnni.cpp PROPERTIES COMPILE_FLAGS "/arch:AVX512")
|
||||
endif()
|
||||
else()
|
||||
set_source_files_properties(src/archImpl/sse2.cpp PROPERTIES COMPILE_FLAGS "-msse2")
|
||||
set_source_files_properties(src/archImpl/sse4_1.cpp PROPERTIES COMPILE_FLAGS "-msse2 -msse4.1")
|
||||
if (KIWI_USE_CPUINFO)
|
||||
set_source_files_properties(src/archImpl/avx2.cpp PROPERTIES COMPILE_FLAGS "-mavx -mavx2 -mfma")
|
||||
set_source_files_properties(src/archImpl/avx512bw.cpp PROPERTIES COMPILE_FLAGS "-mavx -mavx2 -mfma -mavx512f -mavx512vl -mavx512dq -mavx512bw")
|
||||
set_source_files_properties(src/archImpl/avx512vnni.cpp PROPERTIES COMPILE_FLAGS "-mavx -mavx2 -mfma -mavx512f -mavx512vl -mavx512dq -mavx512bw -mavx512vnni")
|
||||
if (AVX_VNNI_SUPPORTED)
|
||||
set_source_files_properties(src/archImpl/avx_vnni.cpp PROPERTIES COMPILE_FLAGS "-mavx -mavx2 -mfma -mavxvnni")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
elseif (KIWI_CPU_ARCH MATCHES "arm64")
|
||||
message("Compiling for arm64")
|
||||
set( CORE_SRCS
|
||||
${CORE_SRCS}
|
||||
src/archImpl/neon.cpp
|
||||
)
|
||||
set_source_files_properties(src/archImpl/neon.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a -DKIWI_ARCH_ARM64=1")
|
||||
elseif (KIWI_CPU_ARCH MATCHES "wasm")
|
||||
message("Compiling for wasm")
|
||||
else()
|
||||
message("Compiling for other")
|
||||
endif()
|
||||
|
||||
add_library( "${PROJECT_NAME}_static" STATIC
|
||||
${CORE_SRCS}
|
||||
src/capi/kiwi_c.cpp
|
||||
${CPUINFO_OBJECTS_STATIC}
|
||||
${STREAMVBYTE_OBJECTS}
|
||||
)
|
||||
|
||||
install(TARGETS ${PROJECT_NAME}_static PUBLIC_HEADER DESTINATION include/kiwi)
|
||||
|
||||
# Install the kiwi library as well as header files to (`include/kiwi` directory)
|
||||
# so that a user can use it in their own projects that are not cmake projects.
|
||||
file(GLOB KIWI_INCLUDE_FILES "include/kiwi/*.h" "include/kiwi/*.hpp")
|
||||
|
||||
if(KIWI_BUILD_DYNAMIC)
|
||||
add_library( "${PROJECT_NAME}" SHARED
|
||||
${CORE_SRCS}
|
||||
src/capi/kiwi_c.cpp
|
||||
${CPUINFO_OBJECTS_SHARED}
|
||||
${STREAMVBYTE_OBJECTS}
|
||||
)
|
||||
set_target_properties("${PROJECT_NAME}" PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||
PUBLIC_HEADER "${KIWI_INCLUDE_FILES}"
|
||||
)
|
||||
|
||||
install(TARGETS ${PROJECT_NAME} PUBLIC_HEADER DESTINATION include/kiwi)
|
||||
target_compile_options("${PROJECT_NAME}" PRIVATE "${ADDITIONAL_FLAGS}")
|
||||
endif()
|
||||
|
||||
target_compile_options("${PROJECT_NAME}_static" PRIVATE "${ADDITIONAL_FLAGS}")
|
||||
|
||||
#target_link_libraries("${PROJECT_NAME}_static" cpuinfo_internals)
|
||||
#target_link_libraries("${PROJECT_NAME}" cpuinfo)
|
||||
|
||||
if (KIWI_BUILD_CLI)
|
||||
add_executable( "${PROJECT_NAME}-cli-${PROJECT_VERSION}"
|
||||
tools/runner.cpp
|
||||
)
|
||||
|
||||
target_link_libraries( "${PROJECT_NAME}-cli-${PROJECT_VERSION}"
|
||||
"${PROJECT_NAME}_static"
|
||||
)
|
||||
endif()
|
||||
|
||||
if (KIWI_BUILD_EVALUATOR)
|
||||
add_executable( "${PROJECT_NAME}-evaluator"
|
||||
tools/Evaluator.cpp
|
||||
tools/evaluator_main.cpp
|
||||
)
|
||||
|
||||
target_link_libraries( "${PROJECT_NAME}-evaluator"
|
||||
"${PROJECT_NAME}_static"
|
||||
)
|
||||
endif()
|
||||
|
||||
if (KIWI_BUILD_MODEL_BUILDER)
|
||||
add_executable( "${PROJECT_NAME}-model-builder"
|
||||
tools/model_builder.cpp
|
||||
)
|
||||
|
||||
target_link_libraries( "${PROJECT_NAME}-model-builder"
|
||||
"${PROJECT_NAME}_static"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
if(KIWI_STATIC_WITHOUT_MT)
|
||||
message(STATUS "Use /MD at kiwi_static")
|
||||
add_library( "${PROJECT_NAME}_mt_static" STATIC
|
||||
${CORE_SRCS}
|
||||
src/capi/kiwi_c.cpp
|
||||
${CPUINFO_OBJECTS_STATIC}
|
||||
)
|
||||
|
||||
target_compile_options("${PROJECT_NAME}_mt_static" PUBLIC
|
||||
/MT
|
||||
)
|
||||
else()
|
||||
message(STATUS "Use /MT at kiwi_static")
|
||||
target_compile_options("${PROJECT_NAME}_static" PUBLIC
|
||||
/MT
|
||||
)
|
||||
target_compile_options("streamvbyte" PUBLIC
|
||||
/MT
|
||||
)
|
||||
endif()
|
||||
|
||||
if(KIWI_BUILD_DYNAMIC)
|
||||
target_compile_options("${PROJECT_NAME}" PUBLIC
|
||||
/MT
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE AND NOT ANDROID)
|
||||
target_link_libraries( "${PROJECT_NAME}_static"
|
||||
rt
|
||||
)
|
||||
|
||||
if (KIWI_BUILD_CLI)
|
||||
target_link_libraries( "${PROJECT_NAME}-cli-${PROJECT_VERSION}"
|
||||
rt
|
||||
)
|
||||
endif()
|
||||
|
||||
if (KIWI_BUILD_EVALUATOR)
|
||||
target_link_libraries( "${PROJECT_NAME}-evaluator"
|
||||
rt
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(KIWI_BUILD_DYNAMIC)
|
||||
target_compile_definitions("${PROJECT_NAME}"
|
||||
PUBLIC DLL_EXPORT=1
|
||||
)
|
||||
endif()
|
||||
|
||||
if(KIWI_BUILD_TEST)
|
||||
add_subdirectory( third_party/googletest )
|
||||
add_subdirectory( test )
|
||||
if(MSVC)
|
||||
target_compile_options("gtest_main" PUBLIC
|
||||
/MT
|
||||
)
|
||||
target_compile_options("gtest" PUBLIC
|
||||
/MT
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(KIWI_JAVA_BINDING)
|
||||
add_subdirectory( bindings/java )
|
||||
endif()
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
add_subdirectory( bindings/wasm )
|
||||
endif()
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "x64-Debug",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Debug",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": ""
|
||||
},
|
||||
{
|
||||
"name": "x86-Debug",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Debug",
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x86" ]
|
||||
},
|
||||
{
|
||||
"name": "x64-Release",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "RelWithDebInfo",
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"variables": []
|
||||
},
|
||||
{
|
||||
"name": "x86-Release",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "RelWithDebInfo",
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
"installRoot": "${projectDir}\\out\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x86" ],
|
||||
"variables": []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
# 기여하기
|
||||
|
||||
Kiwi는 LGPL v3 라이센스로 배포되며 누구든지 GitHub의 풀 리퀘스트 기능을 통해 Kiwi에 기여할 수 있습니다.
|
||||
|
||||
## 연락하기
|
||||
|
||||
질문이 있다면 언제든지 편하게 이슈에 Question레이블로 글을 남겨주세요.
|
||||
|
||||
## 시작하기
|
||||
|
||||
- 이 저장소를 포크합니다.
|
||||
- `README.md`를 참고하여 빌드합니다.
|
||||
|
||||
# 기여 과정
|
||||
|
||||
기여는 일반적으로 다음과 같은 순서로 진행됩니다.
|
||||
|
||||
- 기여할 대상이 되는 브랜치(보통 `main`)로부터 목표 브랜치를 하나 만듭니다.
|
||||
- 코드를 수정하고 논리적 단위로 커밋을 생성합니다 (커밋 메세지 양식은 아래를 참조해주세요)
|
||||
- 포크된 개인 저장소의 목표 브랜치로 변경사항을 푸시합니다.
|
||||
- 변경된 코드가 테스트를 통과하는지 확인해주세요. 그리고 필요할 경우 적절한 테스트를 추가해주세요.
|
||||
- 원본 저장소로 풀 리퀘스트를 날립니다.
|
||||
|
||||
기여 과정이 애매한 경우 언제든지 이슈에 질문글을 남겨주세요.
|
||||
|
||||
## 코드에 기여하기
|
||||
|
||||
### 커밋 메세지 양식
|
||||
|
||||
커밋 메세지에는 "무엇"을 "왜" 바꿨는지가 드러나야합니다.
|
||||
커밋 메세지 제목에는 "무엇"을 바꿨는지를 간략하게 작성하고
|
||||
나머지 본문에는 "왜" 바꿨는지 잘 서술해주세요.
|
||||
|
||||
커밋 메세지는 영어로 작성하는 걸 원칙으로 하지만,
|
||||
한국어 형태소 분석기 특성 상 한국어로 설명하는게 편한 경우에는 한국어로 작성하는 것도 허용합니다.
|
||||
|
||||
첫번째 줄은 제목으로써 항상 80글자 이하여야 합니다.
|
||||
두번째 줄은 빈줄로 남겨두고 세번째 줄부터 줄마다 80글자가 넘지 않도록 서술해주세요.
|
||||
|
||||
### 테스트
|
||||
|
||||
코드 변경사항이 포함된 풀 리퀘스트를 날리기에 앞서 먼저 테스트를 꼭 수행해주세요.
|
||||
로컬에서 모든 테스트를 통과한 경우에만 풀 리퀘스트를 날리기를 부탁드립니다.
|
||||
|
||||
## 평가용 말뭉치에 기여하기
|
||||
|
||||
평가용 말뭉치(`eval_data/` 폴더)는 Kiwi의 성능을 평가하는 데 쓰이는 말뭉치를 말합니다.
|
||||
평가용 말뭉치가 크고 다양할 수록 Kiwi의 현재 성능을 더 정확하게 파악하고, 어떤 오류들이 잠재해 있는지 자세하게 확인할 수 있습니다.
|
||||
따라서 말뭉치에 기여하는 것 역시 코드 수정을 통한 기여만큼이나 가치 있는 일입니다.
|
||||
|
||||
평가용 말뭉치 역시 코드와 동일한 라이센스로 배포되기에 저작권 문제가 발생할 수 있는 텍스트를 복사해오는 것은 지양해주세요.
|
||||
그 대신 개인이 직접 작성한 문장을 등록하는 것을 권장합니다.
|
||||
|
||||
## 문서화에 기여하기
|
||||
245
Form_8h.html
Normal file
245
Form_8h.html
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>Kiwi: include/kiwi/Form.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">Kiwi
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_602883e5d098af516ca12f13d12399cf.html">kiwi</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle"><div class="title">Form.h File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>형태 및 형태소에 관한 정보를 담는 구조체들이 선언된 헤더
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <cmath></code><br />
|
||||
<code>#include <<a class="el" href="Types_8h.html">kiwi/Types.h</a>></code><br />
|
||||
<code>#include <kiwi/FixedVector.hpp></code><br />
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
Include dependency graph for Form.h:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><img src="Form_8h__incl.png" border="0" usemap="#ainclude_2kiwi_2Form_8h" alt=""/></div>
|
||||
</div>
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
This graph shows which files directly or indirectly include this file:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><img src="Form_8h__dep__incl.png" border="0" usemap="#ainclude_2kiwi_2Form_8hdep" alt=""/></div>
|
||||
</div>
|
||||
</div><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1MorphemeRaw.html">kiwi::MorphemeRaw</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">형태소에 관한 모든 정보를 담는 구조체의 템플릿 <a href="structkiwi_1_1MorphemeRaw.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1Morpheme.html">kiwi::Morpheme</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">형태소에 관한 모든 정보를 담는 구조체의 템플릿 <a href="structkiwi_1_1Morpheme.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1FormRaw.html">kiwi::FormRaw</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">형태에 관한 모든 정보를 담는 구조체의 템플릿 <a href="structkiwi_1_1FormRaw.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1Form.html">kiwi::Form</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">형태에 관한 모든 정보를 담는 구조체 <a href="structkiwi_1_1Form.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1TypoForm.html">kiwi::TypoForm</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:aee2f709c678999fb64969f82e86c7a35" id="r_aee2f709c678999fb64969f82e86c7a35"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structkiwi_1_1Form.html">Form</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="Form_8h.html#aee2f709c678999fb64969f82e86c7a35">kiwi::bake</a> (const <a class="el" href="structkiwi_1_1FormRaw.html">FormRaw</a> &o, const <a class="el" href="structkiwi_1_1Morpheme.html">Morpheme</a> *morphBase, bool zCodaAppendable, bool zSiotAppendable, const <a class="el" href="Types_8h.html#a48d29484f2a48f6a4de60bbfd7746232">Vector</a>< uint32_t > &additionalCands={})</td></tr>
|
||||
<tr class="memdesc:aee2f709c678999fb64969f82e86c7a35"><td class="mdescLeft"> </td><td class="mdescRight">변경가능한 형태 정보를 bake하여 최적화한다. <br /></td></tr>
|
||||
<tr class="separator:aee2f709c678999fb64969f82e86c7a35"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9a5e003889c5c747a5650ae0a7d58f9d" id="r_a9a5e003889c5c747a5650ae0a7d58f9d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structkiwi_1_1Morpheme.html">Morpheme</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="Form_8h.html#a9a5e003889c5c747a5650ae0a7d58f9d">kiwi::bake</a> (const <a class="el" href="structkiwi_1_1MorphemeRaw.html">MorphemeRaw</a> &o, const <a class="el" href="structkiwi_1_1Morpheme.html">Morpheme</a> *morphBase, const <a class="el" href="structkiwi_1_1Form.html">Form</a> *formBase, const <a class="el" href="Types_8h.html#a48d29484f2a48f6a4de60bbfd7746232">Vector</a>< size_t > &formMap)</td></tr>
|
||||
<tr class="memdesc:a9a5e003889c5c747a5650ae0a7d58f9d"><td class="mdescLeft"> </td><td class="mdescRight">변경 가능한 형태소 정보를 bake하여 최적화한다. <br /></td></tr>
|
||||
<tr class="separator:a9a5e003889c5c747a5650ae0a7d58f9d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>형태 및 형태소에 관한 정보를 담는 구조체들이 선언된 헤더 </p>
|
||||
<dl class="section author"><dt>Author</dt><dd>bab2min (<a href="#" onclick="location.href='mai'+'lto:'+'bab'+'2m'+'in@'+'gm'+'ail'+'.c'+'om'; return false;">bab2m<span class="obfuscator">.nosp@m.</span>in@g<span class="obfuscator">.nosp@m.</span>mail.<span class="obfuscator">.nosp@m.</span>com</a>) </dd></dl>
|
||||
<dl class="section version"><dt>Version</dt><dd>0.23.1 </dd></dl>
|
||||
<dl class="section date"><dt>Date</dt><dd>2026-04-05 </dd></dl>
|
||||
</div><h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="aee2f709c678999fb64969f82e86c7a35" name="aee2f709c678999fb64969f82e86c7a35"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aee2f709c678999fb64969f82e86c7a35">◆ </a></span>bake() <span class="overload">[1/2]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Form kiwi::bake </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="structkiwi_1_1FormRaw.html">FormRaw</a> & </td>
|
||||
<td class="paramname"><em>o</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const <a class="el" href="structkiwi_1_1Morpheme.html">Morpheme</a> * </td>
|
||||
<td class="paramname"><em>morphBase</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">bool </td>
|
||||
<td class="paramname"><em>zCodaAppendable</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">bool </td>
|
||||
<td class="paramname"><em>zSiotAppendable</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const <a class="el" href="Types_8h.html#a48d29484f2a48f6a4de60bbfd7746232">Vector</a>< uint32_t > & </td>
|
||||
<td class="paramname"><em>additionalCands</em> = <code>{}</code> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>변경가능한 형태 정보를 bake하여 최적화한다. </p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">o</td><td>변경 가능한 형태 정보 </td></tr>
|
||||
<tr><td class="paramname">morphBase</td><td>형태소 배열의 시작 위치 </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>최적화된 형태 정보 </dd></dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9a5e003889c5c747a5650ae0a7d58f9d" name="a9a5e003889c5c747a5650ae0a7d58f9d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9a5e003889c5c747a5650ae0a7d58f9d">◆ </a></span>bake() <span class="overload">[2/2]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Morpheme kiwi::bake </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const <a class="el" href="structkiwi_1_1MorphemeRaw.html">MorphemeRaw</a> & </td>
|
||||
<td class="paramname"><em>o</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const <a class="el" href="structkiwi_1_1Morpheme.html">Morpheme</a> * </td>
|
||||
<td class="paramname"><em>morphBase</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const <a class="el" href="structkiwi_1_1Form.html">Form</a> * </td>
|
||||
<td class="paramname"><em>formBase</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const <a class="el" href="Types_8h.html#a48d29484f2a48f6a4de60bbfd7746232">Vector</a>< size_t > & </td>
|
||||
<td class="paramname"><em>formMap</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>변경 가능한 형태소 정보를 bake하여 최적화한다. </p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">o</td><td>변경 가능한 형태소 정보 </td></tr>
|
||||
<tr><td class="paramname">morphBase</td><td>형태소 배열의 시작 위치 </td></tr>
|
||||
<tr><td class="paramname">formBase</td><td>형태 배열의 시작 위치 </td></tr>
|
||||
<tr><td class="paramname">formMap</td><td></td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>최적화된 형태소 정보 </dd></dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
10
Form_8h__dep__incl.dot
Normal file
10
Form_8h__dep__incl.dot
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
digraph "include/kiwi/Form.h"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="include/kiwi/Form.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="형태 및 형태소에 관한 정보를 담는 구조체들이 선언된 헤더"];
|
||||
Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="include/kiwi/Kiwi.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Kiwi_8h.html",tooltip="Kiwi C++ API를 담고 있는 헤더 파일"];
|
||||
}
|
||||
36
Form_8h__incl.dot
Normal file
36
Form_8h__incl.dot
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
digraph "include/kiwi/Form.h"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="include/kiwi/Form.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="형태 및 형태소에 관한 정보를 담는 구조체들이 선언된 헤더"];
|
||||
Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="cmath",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node3 [id="Node000003",label="kiwi/Types.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Types_8h.html",tooltip="Kiwi C++ API에 쓰이는 주요 타입들을 모아놓은 헤더 파일"];
|
||||
Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node4 [id="Node000004",label="vector",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node5 [id="edge4_Node000003_Node000005",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node5 [id="Node000005",label="deque",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node6 [id="edge5_Node000003_Node000006",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node6 [id="Node000006",label="map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node7 [id="edge6_Node000003_Node000007",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node7 [id="Node000007",label="unordered_map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node8 [id="edge7_Node000003_Node000008",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node8 [id="Node000008",label="unordered_set",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node9 [id="edge8_Node000003_Node000009",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node9 [id="Node000009",label="string",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node10 [id="edge9_Node000003_Node000010",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node10 [id="Node000010",label="string_view",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node11 [id="edge10_Node000003_Node000011",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node11 [id="Node000011",label="memory",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node12 [id="edge11_Node000003_Node000012",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node12 [id="Node000012",label="type_traits",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node13 [id="edge12_Node000003_Node000013",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node13 [id="Node000013",label="functional",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node14 [id="edge13_Node000003_Node000014",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node14 [id="Node000014",label="stdexcept",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node15 [id="edge14_Node000003_Node000015",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node15 [id="Node000015",label="iostream",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
}
|
||||
183
Kiwi.sln
183
Kiwi.sln
|
|
@ -1,183 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.1.32210.238
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cli", "vsproj\cli.vcxproj", "{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kiwi_c", "vsproj\kiwi_c.vcxproj", "{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kiwi_shared_library", "vsproj\kiwi_shared_library.vcxproj", "{F790BC37-2732-4ED1-9CA5-7248BED3588E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "evaluator", "vsproj\evaluator.vcxproj", "{06D21E1F-AA67-4C06-8C8C-90307A49603D}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{68828706-3B82-4236-A183-7F250B65C2A3}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
CMakeLists.txt = CMakeLists.txt
|
||||
README.md = README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test\test.vcxproj", "{FE648386-241A-4859-A7EC-01EE7FB1893E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kiwi_c_static", "vsproj\kiwi_c_static.vcxproj", "{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "build_model", "vsproj\build_model.vcxproj", "{4764D221-D089-4494-86CB-7F67DE6644CB}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kiwi_java", "vsproj\kiwi_java.vcxproj", "{EE01F0BB-014E-491B-A4BA-3DB952A541A0}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "build_cong", "vsproj\build_cong.vcxproj", "{C63940BA-24B0-452C-A618-E435888BB45C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "diff_tokens", "vsproj\diff_tokens.vcxproj", "{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "self_label", "vsproj\self_label.vcxproj", "{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|ARM64 = Debug|ARM64
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|ARM64 = Release|ARM64
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Debug|x64.Build.0 = Debug|x64
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Debug|x86.Build.0 = Debug|Win32
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Release|x64.ActiveCfg = Release|x64
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Release|x64.Build.0 = Release|x64
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Release|x86.ActiveCfg = Release|Win32
|
||||
{1B5AD766-36DC-4207-8B0E-F45CBEF473AB}.Release|x86.Build.0 = Release|Win32
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Debug|x64.Build.0 = Debug|x64
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Release|x64.ActiveCfg = Release|x64
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Release|x64.Build.0 = Release|x64
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{F91F4D06-6485-4FF0-AB01-C07E9E58A80E}.Release|x86.Build.0 = Release|Win32
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Debug|x64.Build.0 = Debug|x64
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Release|x64.ActiveCfg = Release|x64
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Release|x64.Build.0 = Release|x64
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{F790BC37-2732-4ED1-9CA5-7248BED3588E}.Release|x86.Build.0 = Release|Win32
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Debug|x64.Build.0 = Debug|x64
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Debug|x86.Build.0 = Debug|Win32
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Release|x64.ActiveCfg = Release|x64
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Release|x64.Build.0 = Release|x64
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Release|x86.ActiveCfg = Release|Win32
|
||||
{06D21E1F-AA67-4C06-8C8C-90307A49603D}.Release|x86.Build.0 = Release|Win32
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Debug|x64.Build.0 = Debug|x64
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Release|x64.ActiveCfg = Release|x64
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Release|x64.Build.0 = Release|x64
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{FE648386-241A-4859-A7EC-01EE7FB1893E}.Release|x86.Build.0 = Release|Win32
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Debug|x64.Build.0 = Debug|x64
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Debug|x86.Build.0 = Debug|Win32
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Release|x64.ActiveCfg = Release|x64
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Release|x64.Build.0 = Release|x64
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Release|x86.ActiveCfg = Release|Win32
|
||||
{E7AA2D5D-631A-4A0D-BA7C-F5BEA56C54E7}.Release|x86.Build.0 = Release|Win32
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Debug|x64.Build.0 = Debug|x64
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Debug|x86.Build.0 = Debug|Win32
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Release|x64.ActiveCfg = Release|x64
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Release|x64.Build.0 = Release|x64
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Release|x86.ActiveCfg = Release|Win32
|
||||
{4764D221-D089-4494-86CB-7F67DE6644CB}.Release|x86.Build.0 = Release|Win32
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Debug|x64.Build.0 = Debug|x64
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Debug|x86.Build.0 = Debug|Win32
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Release|x64.ActiveCfg = Release|x64
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Release|x64.Build.0 = Release|x64
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Release|x86.ActiveCfg = Release|Win32
|
||||
{EE01F0BB-014E-491B-A4BA-3DB952A541A0}.Release|x86.Build.0 = Release|Win32
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Debug|x64.Build.0 = Debug|x64
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Debug|x86.Build.0 = Debug|Win32
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Release|x64.ActiveCfg = Release|x64
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Release|x64.Build.0 = Release|x64
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Release|x86.ActiveCfg = Release|Win32
|
||||
{C63940BA-24B0-452C-A618-E435888BB45C}.Release|x86.Build.0 = Release|Win32
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Debug|x64.Build.0 = Debug|x64
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Debug|x86.Build.0 = Debug|Win32
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Release|x64.ActiveCfg = Release|x64
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Release|x64.Build.0 = Release|x64
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Release|x86.ActiveCfg = Release|Win32
|
||||
{EBA7E78E-01A2-42A4-B335-97D3DEFF9882}.Release|x86.Build.0 = Release|Win32
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Debug|x64.Build.0 = Debug|x64
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Release|ARM64.Build.0 = Release|ARM64
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Release|x64.ActiveCfg = Release|x64
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Release|x64.Build.0 = Release|x64
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{0CB53E9D-99A3-4BC9-9C32-E7BEE58910EC}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {23C6A367-3A32-4EF7-BD96-A4459BC6E903}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
151
Kiwi_8h.html
Normal file
151
Kiwi_8h.html
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>Kiwi: include/kiwi/Kiwi.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">Kiwi
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_602883e5d098af516ca12f13d12399cf.html">kiwi</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle"><div class="title">Kiwi.h File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Kiwi C++ API를 담고 있는 헤더 파일
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <iostream></code><br />
|
||||
<code>#include <future></code><br />
|
||||
<code>#include <functional></code><br />
|
||||
<code>#include <memory></code><br />
|
||||
<code>#include <string></code><br />
|
||||
<code>#include <string_view></code><br />
|
||||
<code>#include <optional></code><br />
|
||||
<code>#include "Macro.h"</code><br />
|
||||
<code>#include "<a class="el" href="Types_8h.html">Types.h</a>"</code><br />
|
||||
<code>#include "<a class="el" href="Form_8h.html">Form.h</a>"</code><br />
|
||||
<code>#include "Utils.h"</code><br />
|
||||
<code>#include "Trainer.h"</code><br />
|
||||
<code>#include "Trie.hpp"</code><br />
|
||||
<code>#include "PatternMatcher.h"</code><br />
|
||||
<code>#include "FrozenTrie.h"</code><br />
|
||||
<code>#include "Knlm.h"</code><br />
|
||||
<code>#include "SkipBigramModel.h"</code><br />
|
||||
<code>#include "CoNgramModel.h"</code><br />
|
||||
<code>#include "ThreadPool.h"</code><br />
|
||||
<code>#include "WordDetector.h"</code><br />
|
||||
<code>#include "TagUtils.h"</code><br />
|
||||
<code>#include "LangModel.h"</code><br />
|
||||
<code>#include "Joiner.h"</code><br />
|
||||
<code>#include "<a class="el" href="TypoTransformer_8h.html">TypoTransformer.h</a>"</code><br />
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
Include dependency graph for Kiwi.h:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><img src="Kiwi_8h__incl.png" border="0" usemap="#ainclude_2kiwi_2Kiwi_8h" alt=""/></div>
|
||||
</div>
|
||||
</div><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1HSDatasetOption.html">kiwi::HSDatasetOption</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1AnalyzeOption.html">kiwi::AnalyzeOption</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1MorphemeDef.html">kiwi::MorphemeDef</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1KiwiConfig.html">kiwi::KiwiConfig</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1Kiwi.html">kiwi::Kiwi</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">실제 형태소 분석을 수행하는 클래스. <a href="classkiwi_1_1Kiwi.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1KiwiBuilder.html">kiwi::KiwiBuilder</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">형태소 분석에 사용될 사전을 관리하고, 사전을 바탕으로 실제 형태소 분석을 수행하는 Kiwi의 인스턴스를 생성하는 클래스. <a href="classkiwi_1_1KiwiBuilder.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1KiwiBuilder_1_1ModelBuildArgs.html">kiwi::KiwiBuilder::ModelBuildArgs</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:a2de1eab74f8aae5555811b42789cd686" id="r_a2de1eab74f8aae5555811b42789cd686"><td class="memItemLeft" align="right" valign="top"><a id="a2de1eab74f8aae5555811b42789cd686" name="a2de1eab74f8aae5555811b42789cd686"></a>
|
||||
uint32_t </td><td class="memItemRight" valign="bottom"><b>kiwi::getDefaultMorphemeId</b> (<a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> tag)</td></tr>
|
||||
<tr class="separator:a2de1eab74f8aae5555811b42789cd686"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Kiwi C++ API를 담고 있는 헤더 파일 </p>
|
||||
<dl class="section author"><dt>Author</dt><dd>bab2min (<a href="#" onclick="location.href='mai'+'lto:'+'bab'+'2m'+'in@'+'gm'+'ail'+'.c'+'om'; return false;">bab2m<span class="obfuscator">.nosp@m.</span>in@g<span class="obfuscator">.nosp@m.</span>mail.<span class="obfuscator">.nosp@m.</span>com</a>) </dd></dl>
|
||||
<dl class="section version"><dt>Version</dt><dd>0.23.1 </dd></dl>
|
||||
<dl class="section date"><dt>Date</dt><dd>2026-04-05 </dd></dl>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
51
Kiwi_8h__incl.dot
Normal file
51
Kiwi_8h__incl.dot
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
digraph "include/kiwi/Kiwi.h"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="include/kiwi/Kiwi.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Kiwi C++ API를 담고 있는 헤더 파일"];
|
||||
Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="iostream",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node3 [id="Node000003",label="future",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node4 [id="edge3_Node000001_Node000004",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node4 [id="Node000004",label="functional",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node5 [id="edge4_Node000001_Node000005",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node5 [id="Node000005",label="memory",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node6 [id="edge5_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node6 [id="Node000006",label="string",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node7 [id="edge6_Node000001_Node000007",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node7 [id="Node000007",label="string_view",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node8 [id="edge7_Node000001_Node000008",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node8 [id="Node000008",label="optional",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node9 [id="edge8_Node000001_Node000009",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node9 [id="Node000009",label="Types.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Types_8h.html",tooltip="Kiwi C++ API에 쓰이는 주요 타입들을 모아놓은 헤더 파일"];
|
||||
Node9 -> Node10 [id="edge9_Node000009_Node000010",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node10 [id="Node000010",label="vector",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node9 -> Node11 [id="edge10_Node000009_Node000011",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node11 [id="Node000011",label="deque",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node9 -> Node12 [id="edge11_Node000009_Node000012",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node12 [id="Node000012",label="map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node9 -> Node13 [id="edge12_Node000009_Node000013",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node13 [id="Node000013",label="unordered_map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node9 -> Node14 [id="edge13_Node000009_Node000014",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node14 [id="Node000014",label="unordered_set",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node9 -> Node6 [id="edge14_Node000009_Node000006",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node9 -> Node7 [id="edge15_Node000009_Node000007",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node9 -> Node5 [id="edge16_Node000009_Node000005",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node9 -> Node15 [id="edge17_Node000009_Node000015",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node15 [id="Node000015",label="type_traits",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node9 -> Node4 [id="edge18_Node000009_Node000004",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node9 -> Node16 [id="edge19_Node000009_Node000016",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node16 [id="Node000016",label="stdexcept",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node9 -> Node2 [id="edge20_Node000009_Node000002",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node1 -> Node17 [id="edge21_Node000001_Node000017",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node17 [id="Node000017",label="Form.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Form_8h.html",tooltip="형태 및 형태소에 관한 정보를 담는 구조체들이 선언된 헤더"];
|
||||
Node17 -> Node18 [id="edge22_Node000017_Node000018",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node18 [id="Node000018",label="cmath",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node17 -> Node9 [id="edge23_Node000017_Node000009",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node1 -> Node19 [id="edge24_Node000001_Node000019",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node19 [id="Node000019",label="TypoTransformer.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$TypoTransformer_8h.html",tooltip="오타 교정에 사용되는 TypoTransformer 및 관련 클래스들을 정의합니다."];
|
||||
Node19 -> Node9 [id="edge25_Node000019_Node000009",color="steelblue1",style="solid",tooltip=" "];
|
||||
}
|
||||
19
LICENSE
19
LICENSE
|
|
@ -1,19 +0,0 @@
|
|||
Kiwi
|
||||
|
||||
Copyright (c) 2017, Minchul Lee
|
||||
bab2min@gmail.com
|
||||
http://bab2min.tistory.com/560
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or (at
|
||||
your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this library; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
import sys
|
||||
import re
|
||||
import json
|
||||
|
||||
coda_pat = re.compile(r'^(?:(ㄴ)|(ㄹ)|(ㅁ)|(ㅂ))')
|
||||
|
||||
def _sub(m):
|
||||
return ' ᆫᆯᆷᆸ'[m.lastindex]
|
||||
|
||||
def normalize_morpheme(form, tag):
|
||||
if tag.startswith('MM'):
|
||||
return form, 'MM'
|
||||
if tag.startswith('J') or tag.startswith('E'):
|
||||
return coda_pat.sub(_sub, form), tag
|
||||
return form, tag
|
||||
|
||||
def convert(input_file, output_file):
|
||||
obj = json.load(input_file)
|
||||
for doc in obj['document']:
|
||||
for sent in doc['sentence']:
|
||||
for word_id, word in enumerate(sent['word'] or [], start=1):
|
||||
print(word['form'], end='\t', file=output_file)
|
||||
s = []
|
||||
for morph in sent['morpheme']:
|
||||
if morph['word_id'] != word_id: continue
|
||||
s.extend(normalize_morpheme(morph['form'], morph['label']))
|
||||
print(*s, sep='\t', end='\n', file=output_file)
|
||||
print(file=output_file, flush=True)
|
||||
|
||||
def augment_ef(input_file, output_file, concat_sents=3):
|
||||
obj = json.load(input_file)
|
||||
for doc in obj['document']:
|
||||
d = []
|
||||
n = 0
|
||||
for sent in doc['sentence']:
|
||||
morphs = sent['morpheme']
|
||||
try:
|
||||
if morphs[-2]['label'] == 'EF' and morphs[-1]['label'] == 'SF':
|
||||
del morphs[-1]
|
||||
elif morphs[-3]['label'] == 'EF' and morphs[-2]['label'] == 'JX' and morphs[-1]['label'] == 'SF':
|
||||
morphs[-3]['form'] += morphs[-2]['form']
|
||||
del morphs[-2]
|
||||
del morphs[-1]
|
||||
else:
|
||||
continue
|
||||
except:
|
||||
continue
|
||||
for word_id, word in enumerate(sent['word'] or [], start=1):
|
||||
s = []
|
||||
for morph in morphs:
|
||||
if morph['word_id'] != word_id: continue
|
||||
s.extend(normalize_morpheme(morph['form'], morph['label']))
|
||||
d.append((word['form'], s))
|
||||
n += 1
|
||||
if concat_sents and n % concat_sents == 0:
|
||||
for w, s in d:
|
||||
print(w, *s, sep='\t', end='\n', file=output_file)
|
||||
print(file=output_file, flush=True)
|
||||
d.clear()
|
||||
if d:
|
||||
for w, s in d:
|
||||
print(w, *s, sep='\t', end='\n', file=output_file)
|
||||
print(file=output_file, flush=True)
|
||||
|
||||
def main(args):
|
||||
if args.output:
|
||||
output = open(args.output, 'w', encoding='utf-8')
|
||||
else:
|
||||
output = sys.stdout
|
||||
|
||||
for input in args.input:
|
||||
if args.augment_ef:
|
||||
augment_ef(open(input, encoding='utf-8'), output)
|
||||
else:
|
||||
convert(open(input, encoding='utf-8'), output)
|
||||
|
||||
if args.output:
|
||||
output.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('input', nargs='+')
|
||||
parser.add_argument('--output')
|
||||
parser.add_argument('--augment_ef', default=False, action='store_true')
|
||||
|
||||
main(parser.parse_args())
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
import re
|
||||
from collections import Counter, defaultdict
|
||||
|
||||
def test_coda_vowel(s):
|
||||
s = ord(s[-1])
|
||||
if s < 0xAC00 or s > 0xD7A3: return None
|
||||
coda = (s - 0xAC00) % 28
|
||||
if coda == 0:
|
||||
return 3
|
||||
if coda == 8:
|
||||
return 2
|
||||
if coda == 27:
|
||||
return 1
|
||||
return 0
|
||||
|
||||
def test_irregular_cand(s):
|
||||
s = ord(s[-1])
|
||||
if s < 0xAC00 or s > 0xD7A3: return False
|
||||
coda = (s - 0xAC00) % 28
|
||||
return coda in (7, 17, 19)
|
||||
|
||||
class MorphemeExtractor:
|
||||
|
||||
stop_pattern = re.compile(r'<.*>|name[0-9]*|[.,?!:;]|.*[()].*')
|
||||
irregular_cands = re.compile(r'V[VAX]')
|
||||
consonant_onset = re.compile(r'[가-싷자-힣]')
|
||||
|
||||
def __init__(self):
|
||||
self._morpheme_cnt = Counter()
|
||||
self._josa_cnts = defaultdict(Counter)
|
||||
self._regular_cnt = Counter()
|
||||
self._irregular_cnt = Counter()
|
||||
|
||||
def feed(self, form, morphemes):
|
||||
self._morpheme_cnt.update(((f, t) for f, t in morphemes if not t.startswith('S')))
|
||||
prev_form = None
|
||||
prev_tag = None
|
||||
for f, t in morphemes:
|
||||
if prev_form:
|
||||
if self.irregular_cands.match(prev_tag) and not self.consonant_onset.match(f) and test_irregular_cand(prev_form):
|
||||
if prev_form in form:
|
||||
self._regular_cnt[prev_form, prev_tag] += 1
|
||||
else:
|
||||
self._irregular_cnt[prev_form, prev_tag] += 1
|
||||
if t.startswith('J'):
|
||||
v = test_coda_vowel(prev_form)
|
||||
if v is not None:
|
||||
self._josa_cnts[f, t][v] += 1
|
||||
prev_form = f
|
||||
prev_tag = t
|
||||
|
||||
def save(self, path, min_cnt=5):
|
||||
with open(path, 'w', encoding='utf-8') as fout:
|
||||
for (form, tag), cnt in self._morpheme_cnt.most_common():
|
||||
if cnt < min_cnt: break
|
||||
if self.stop_pattern.fullmatch(form): continue
|
||||
if tag.startswith('J'):
|
||||
left_dists = self._josa_cnts[form, tag].copy()
|
||||
for i in range(4):
|
||||
left_dists[i] += 3
|
||||
tot = sum(left_dists.values())
|
||||
dists = {}
|
||||
dists['vowel'] = left_dists[3] / tot
|
||||
#dists['vocalic'] = (left_dists[3] + left_dists[2]) / tot
|
||||
#dists['vocalic_h'] = (left_dists[3] + left_dists[2] + left_dists[1]) / tot
|
||||
dists['non_vowel'] = 1 - dists['vowel']
|
||||
#dists['non_vocalic'] = 1 - dists['vocalic']
|
||||
#dists['non_vocalic_h'] = 1 - dists['vocalic_h']
|
||||
v, k = max((v, k) for k, v in dists.items())
|
||||
if v >= 0.85:
|
||||
print(form, tag, cnt, k, v, sep='\t', file=fout)
|
||||
else:
|
||||
print(form, tag, cnt, sep='\t', file=fout)
|
||||
else:
|
||||
regs = self._regular_cnt[form, tag]
|
||||
irregs = self._irregular_cnt[form, tag]
|
||||
if regs or irregs:
|
||||
t = regs + irregs
|
||||
if regs / t >= 0.1:
|
||||
print(form, tag, cnt, 'reg', sep='\t', file=fout)
|
||||
if irregs / t >= 0.1:
|
||||
print(form, tag, cnt, 'irreg', sep='\t', file=fout)
|
||||
else:
|
||||
print(form, tag, cnt, sep='\t', file=fout)
|
||||
|
||||
|
||||
def load_kiwi_corpus(file):
|
||||
for line in open(file, encoding='utf-8'):
|
||||
fd = line.rstrip().split('\t')
|
||||
if len(fd) <= 1: continue
|
||||
yield fd[0], list(zip(fd[1::2], fd[2::2]))
|
||||
|
||||
def main(args):
|
||||
me = MorphemeExtractor()
|
||||
for f in args.input:
|
||||
for form, morphs in load_kiwi_corpus(f):
|
||||
me.feed(form, morphs)
|
||||
|
||||
me.save(args.output, args.min_cnt)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('input', nargs='+')
|
||||
parser.add_argument('output')
|
||||
parser.add_argument('--min_cnt', default=5, type=int)
|
||||
main(parser.parse_args())
|
||||
154349
ModelGenerator/morphemes.txt
154349
ModelGenerator/morphemes.txt
File diff suppressed because it is too large
Load diff
|
|
@ -1,186 +0,0 @@
|
|||
* SW 동조 NNG 실패 NNG ( SS Desync SL ) SS : SP 플레이어 NNG 들 XSN 간 NNB 의 JKG 정보 NNG 중계 NNG 가 JKS 제대로 MAG 동조 NNG 되 XSV 지 EC 않 VX 어 EC 양쪽 NNG 모두 MAG 실행 NNG 단계 NNG 에서 JKB 계획 NNG 하 XSV 었 EP 던 ETM 것 NNB 과 JKB 다르 VA ᆫ ETM 것 NNB 을 JKO 보 VV 게 EC 되 VV 는 ETM 현상 NNG . SF PC SL 유저 NNG 이 VCP ᆯ ETM 경우 NNG 설치 NNG 파일 NNG 안 NNG 에 JKB 출력 NNG 되 XSV ᆫ ETM 기록 NNG 파일 NNG 의 JKG 복사 NNG 본 NNG 을 JKO 만들 VV 고 EC , SP MAC SL 유저 NNG 이 VCP ᆯ ETM 경우 NNG 유저 NNG 라이브러리 NNG 의 JKG 유니티 NNP 폴더 NNG 의 JKG 복사 NNG 본 NNG 을 JKO 만들 VV 어 EC Support@lightmare.com.au W_EMAIL 로 JKB 버그 NNG 신고 NNG 및 MAG 지원 NNG 요청 NNG 을 JKO 하 VV 면 EC 되 VV ᆫ다 EF . SF
|
||||
|
||||
* SW 김영철 NNP ( SS 개그맨 NNG ) SS : SP 최다 NNG 전화 NNG 연결 NNG , SP 음원 NNG 파일 NNG 제공 NNG ( SS 연예인 NNG 이 JKS 직접 MAG vivo119@naver.com W_EMAIL 으로 JKB 보내 VV ᆫ다고 EC 하 VX ᆫ다 EF ) SS , SP 최다 NNG 편집 NNG 의 JKG 주인공 NNG
|
||||
|
||||
아오야마 NNP 마코토 NNP 이 VCP 라는 ETM 이름 NNG 은 JX 그 NP 의 JKG 이메일 NNG 주소 NNG 이 VCP ᆫ ETM Blue-mountain_truth.nogod31@xxxxxx.ne.jp W_EMAIL 를 JKO 보 VV 고 EC 미호시 NNG 가 JKS 추측 NNG 하 XSV ᆫ ETM 이름 NNG 이 VCP 다 EF . SF 그리고 MAJ 아오야마 NNP ( SS : SP 푸르 VA ᆫ ETM 산 NNG ) SS 는 JX 바로 MAG 자메이카 NNP 의 JKG 커피 NNG 산지 NNG 블루 NNG 마운틴 NNG 에서 JKB 따오 VV ᆫ ETM 이름 NNG . SF
|
||||
|
||||
' SS Wake SL Up SL , SP Radio SL ! SF ' SS 이 VCP 라는 ETM 제목 NNG 으로 JKB 주역 NNP 성우 NNP 7 SN 인 NNG 방 NNG 이 JKS 진행 NNG 하 XSV 는 ETM 라디오 NNG 방송 NNG 이 JKS 2014 SN 년 NNB 5 SN 월 NNB 12 SN 일 NNB 부터 JX 애니 NNP 미디어 NNG 공식 NNG 니코니 NNG 코 NNG 채널 NNG 에서 JKB 주 NNG 중 NNB 매일 MAG ( SS 월 NNG ~ SO 금 NNG ) SS 방송 NNG 을 JKO 개시 NNG . SF 갱신 NNG 시간 NNG 은 JX 정오 NNG 이 VCP 며 EC 주역 NNP 멤버 NNG 가 JKS 2 SN 인 NNG 1 SN 조 NNG 로 JKB 출연 NNG , SP 매주 MAG 출연진 NNG 을 JKO 바꾸 VV 며 EC 매일 MAG 다른 MM 코너 NNG 로 JKB 진행 NNG 하 XSV 었 EP 다 EF . SF 독자 NNG 투고 NNG 를 JKO 받 VV 는 ETM 코너 NNG 의 JKG 투고처 NNG 는 JX 모두 MAG wug@gakken.co.jp W_EMAIL 이 VCP 다 EF . SF
|
||||
|
||||
1983 SN 년 NNB 생 XSN 이 VCP 며 EC 이메일 NNG 은 JX smartgirl63@yahoo.com W_EMAIL , SP 홈페이지 NNG 는 JX www SL . SF lisathemovie SL . SF com SL . SF 물론 MAG 모두 MAG 심슨 NNP 에피소드 NNG 중 NNB 스치 VV 어 EC 지나가 VV ᆫ ETM 것 NNB 뿐 NNB 이 VCP 다 EF . SF
|
||||
|
||||
유튜브 NNP 채널 NNG 에 JKB 올라오 VV 었 EP 던 ETM 글 NNG 이 VCP ᆫ ETM 666 SN f SL 756 SN e SL 646 SN f SL 6 SN e SL 74686574617065406 SN 76 SN d SL 61696 SN c SL 2 SN e SL 636 SN f SL 6 SN d SL 206 SN 56 SN d SL 61696 SN c SL 2031302 SN e SL 376 SN d SL 62 SN 의 JKG 숫자 NNG 와 JC 알파벳 NNG 은 JX Hex SL / SP ASCII SL 코드 NNG 계열 NNG 암호 NNG 로 JKB , SP 이것 NP 을 JKO 해독 NNG 하 XSV 면 EC foundonthetape@gmail.com W_EMAIL 이 VCP 라는 ETM 이메일 NNG 주소 NNG 가 JKS 나오 VV ᆫ다 EF . SF 이 MM 이메일 NNG 주소 NNG 로 JKB 메일 NNG 을 JKO 보내 VV 면 EC , SP 메일 NNG 계정 NNG 이 JKS 자동 NNG 응답 NNG 으로 JKB 다음 NNG 과 JKB 같 VA 은 ETM 답신 NNG 을 JKO 보내 VV ᆫ다 EF . SF " SSO stuck SL im SL stuck SL im SL stuck SL im SL stuck SL im SL stuck SL http://www.megaupload.com/?d=3JLYPG9M W_URL " SSC 현재 NNG 는 JX 자동 NNG 응답 NNG 기능 NNG 이 JKS 중지 NNG 되 XSV 어 EC 메일 NNG 을 JKO 보내 VV 어도 EC 답신 NNG 은 JX 오 VV 지 EC 않 VX 는다 EF . SF
|
||||
|
||||
마리아 NNP 히메네스 NNP 의 JKG 이메일 NNG 계정 NNG 은 JX mjimenez@lumerico.mx W_EMAIL 으로 JKB GPortero SL 의 JKG 메일 NNG 에서 JKB 확인 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 으며 EC , SP 여기 NP 서 JKB 그간 NNG 우리 NP 가 JKS 이용 NNG 하 XSV 었 EP 던 ETM 아이디 NNG 들 XSN ( SS 가령 MAG Guillermo SL Portero SL 의 JKG 계정 NNG 은 JX G SL + SW Portero SL = SW GPortero SL ) SS 을 JKO 생각 NNG 하 XSV 면 EC 마리아 NNP 히메네스 NNP 의 JKG 로그인 NNG 아이디 NNG 역시 MAG MJimenez SL 이 VCP ᆷ ETN 을 JKO 유추 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 다 EF . SF 따라서 MAJ 루메리 NNG 코 NNG 홈페이지 NNG 에서 JKB 아이디 NNG MJimenez SL / SP 비밀번호 NNG d SL 0 SN r SL * SW NuLw SL 9 SN 으로 JKB 보안 NNG 총책임자 NNG 마리아 NNP 히메네스 NNP 의 JKG 계정 NNG 에 JKB 접근 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 다 EF . SF
|
||||
|
||||
청취자 NNG 법률 NNG 상담 NNG 을 JKO 주로 MAG 사연 NNG 으로 JKB 받 VV 다 EC 보 VX 니 EC , SP 생각 NNG 보다 JKB 사연 NNG 이 JKS 많 VA 지 EC 않 VX 어 EC 높 VA 은 ETM 확률 NNG 로 JKB 소개 NNG 받 VV 을 ETM 수 NNB 있 VV 다 EF . SF ( SS 이메일 NNG : SP final@sbs.co.kr W_EMAIL ) SS 꼭 MAG 법률 NNG 상담 NNG 만 JX 을 JKO 사연 NNG 으로 JKB 받 VV 는 ETM 것 NNB 은 JX 아니 VCN 다 EF . SF 이 VCP 라고 EC 제목 NNG 을 JKO 달 VV 고 EC 메일 NNG 을 JKO 보내 VV 면 EC 정연 NNP 석 MM 변호사 NNG 의 JKG 드립 NNG 을 JKO 듣 VV 을 ETM 수 NNB 있 VV 을지 EC 도 JX 모르 VV ᆫ다 EF . SF
|
||||
|
||||
* SW Angelkist SL 의 JKG 음원 NNP , SP MR SL 등 NNB 은 JX xenesus@naver.com W_EMAIL 으로 JKB 쪽지 NNG 나 JX 메일 NNG 을 JKO 보내 VV 면 EC 직접 MAG 공유 NNG 하 XSV 어 EC 주 VX 고 EC 있 VX 다 EF . SF
|
||||
|
||||
네이버 NNP 웹 NNP 소설 NNG 베스트 NNG 리그 NNG 에 JKB 연재 NNG 중 NNB 이 VCP ᆫ ETM 웹 NNG 소설 NNG , SP 장르 NNG 는 JX 라이트 NNG 노벨 NNP . SF 작가 NNG 의 JKG 필명 NNG 은 JX Bluebeat SL 유비트 NNP 에서 JKB 따오 VV ᆫ ETM 거 NNB 이 VCP 라고 EC 하 VV ᆫ다 EF . SF Dynamix SL 이 VCP 라는 ETM 리듬 NNG 게임 NNG 의 JKG 팬 NNG 메이드 NNG 제작 NNG 팀 NNG 에 JKB 도 JX 속하 VV 어 EC 있 VX 다 EC , SP 팀 NNG 명 NNG 은 JX Antares SL . SF Youtube SL 에 JKB Team SL Antares SL 이 VCP 라고 EC 검색 NNG 하 XSV 면 EC 작품 NNG 이 JKS 나오 VV 는 ETM 듯 NNB . SF 이메일 NNG 은 JX whlee021128@gmail.com W_EMAIL . SF 최근 NNG 리메이크 NNG 를 JKO 하 VV 었 EP 다 EF . SF ( SS 2017 SN 년 NNB 11 SN 월 NNB 29 SN 일 NNB ) SS 관심 NNG 등록 NNG 수 NNG 는 JX 2017 SN 년 NNB 12 SN 월 NNB 30 SN 일 NNB 오후 NNG 2 SN 시 NNB 42 SN 분 NNB 기준 NNG 267 SN 명 NNB . SF 전면 NNG 무료 NNG 로 JKB 월 NNG , SP 토 NNG , SP 일 NNG 연재 NNG 중 NNB . SF 리메이크 NNG 1화 NNG 부터 JX ' SS 조금 MAG 더 MAG 라노벨 NNG 스럽 XSA 어 EC 지 VX 었 EP 다 EF ' SS 등 NNB 의 JKG 호평 NNG 을 JKO 받 VV 었 EP 다 EF . SF 그러나 MAJ 10 SN 화 NNG 즈음 NNB 에 JKB 는 JX ' SS 주인공 NNG 특성 NNG 을 JKO 살리 VV 어 EC 달 VX 라 EF ' SS , SP ' SS 전개 NNG 를 JKO 질질 MAG 끌 VV ᆫ다 EF ' SS 등 NNB 의 JKG 비평 NNG 을 JKO 많이 MAG 받 VV 기 ETN 도 JX 하 VX 며 EC 11 SN 화 NNB 를 JKO 기점 NNG 으로 JKB 심하 VA 게 EC 호불호 NNG 가 JKS 갈리 VV 어 EC 버리 VX 었 EP 다 EF . SF 리메이크 NNG 전 NNG 에 JKB 는 JX 78000 SN 상당 NNG 의 JKG 많 VA 은 ETM 조회 NNG 수 NNG 를 JKO 기록 NNG 하 XSV 었 EP 으나 EC 현재 NNG ( SS 2018 SN 2 SN . SF 21 SN ) SS 는 JX 18000 SN 정도 NNG 의 JKG 비교 NNG 적 XSN 낮 VA 은 ETM 편 NNG 의 JKG 조회 NNG 수 NNG 와 JC 9 SN . SF 38 SN 이 VCP 라는 ETM 비교적 MAG 낮 VA 은 ETM 별점 NNG ( SS 별 MM 점 NNG 을 JKO 후하 VA 게 EC 주 VX 는 ETM 편 NNB 이 VCP ᆫ ETM 한국 NNP 에서 JKB ᆫ JX 낮 VA 은 ETM 편 NNB 이 VCP 다 EF . SF 실제로 MAG 일본 NNP 소설 NNG 사이트 NNG 대부분 NNG 의 JKG 작품 NNG 은 JX 7 SN 점 NNB 대 XSN 를 JKO 기록 NNG 하 XSV ᆫ다 EF . SF ) SS 을 NNG 기록 NNG 중 NNB 이 VCP ᆫ ETM 거 NNB ᆯ JKO 보 VV 면 EC 호불호 NNG 가 JKS 심하 VA 게 EC 갈리 VV ᆫ ETM 듯 NNB . SF 작품 NNG 링크 NNG . SF
|
||||
|
||||
* SW 계정 NNG 이 JKS 강제 NNG 조치 NNG 를 JKO 당하 VV 어 EC 하 VV ᆯ ETM 말 NNG 이 JKS 있 VV 다면 EC 포럼 NNG 이 JKC 아니 VCN ᆫ ETM admin@flightrising.com W_EMAIL 으로 JKB 메일 NNG 을 JKO 보내 VV 어야 EC 하 VX ᆫ다 EF . SF 관리자 NNG 들 XSN 은 JX 유저 NNG 의 JKG 프라이버시 NNG 를 JKO 위하 VV 어 EC 계정 NNP 에 JKB 관하 VV ᆫ ETM 일 NNG 을 JKO 해당 NNG 유저 NNG 에게 JKB 만 JX 전달 NNG 하 XSV ᆫ다 EF . SF
|
||||
|
||||
* SW 링크 NNG 결승전 NNG 당일 NNG 에 JKB 각 MM 지방 NNG 에서 JKB 타 VV 고 EC 가 VV ᆯ ETM 셔틀버스 NNG 가 JKS 운행 NNG 되 XSV 며 EC 그 MM 외 NNB 다양 NNG 하 XSA ᆫ ETM 이벤트 NNG 가 JKS 벌어지 VV ᆫ다 EF . SF 확인 NNG 은 JX 케스 NNP 파 NNG 페이스북 NNP 에서 JKB 하 VV 며 EC 신청 NNG 은 JX 7 SN 월 NNB 26 SN 일 NNB 부터 JX 8 SN 월 NNB 1 SN 일 NNB 까지 JX kespa_event@e-sports.or.kr W_EMAIL 에서 JKB 하 VV ᆯ ETM 수 NNB 있 VV 다 EF . SF
|
||||
|
||||
* SW 2 SN 월 NNB 29 SN 일 NNB 까지 JX 끊 VV 는 ETM 부분 NNG 을 JKO 표시 NNG 하 XSV ᆫ ETM 작품 NNG 원고 NNG 를 JKO ( SS 50 SN ~ SO 60 SN 작품 NNG 에 JKB 해당 NNG 하 XSV 는 ETM 작가 NNG 만 JX ) SS seed_dnc@hanmail.net W_EMAIL 으로 JKB 보내 VV ᆷ ETN ( SS 보내 VV 지 EC 않 VX 을 ETM 경우 NNG 편집부 NNG 임의 NNG 결정 NNG ) SS
|
||||
|
||||
따라서 VV 어 EC 대포 NNG 폰 NNG 에 JKB 직접 MAG 문의 NNG 를 JKO 하 VV ᆯ ETM 일 NNG 이 JKS 생기 VV 면 EC 다음 NNG 주소 NNG , SP vip@contact.tap4fun.com W_EMAIL 로 JKB 메일 NNG 을 JKO 보내 VV 면 EC 답변 NNG 을 JKO 하 VV 어 EC 주 VX ᆫ다 EF . SF 게임 NNG 내 NNB 에서 JKB 도 JX 이메일 NNG 을 JKO 보내 VV ᆯ ETM 수 NNB 있 VV 다 EF . SF
|
||||
|
||||
특히 MAG 2015 SN 년 NNB 시점 NNG 에서 JKB 이메일 NNG 에 JKB 국경 NNG 이 JKS 없 VA 어 EC 지 VX 면서 EC 해외 NNG 발 NNG 각종 NNG 최신 NNG 기법 NNG 과 JC 바이러스 NNG 를 JKO 동원 NNG 하 XSV ᆫ ETM APT SL 가 JKS 날아들 VV 어 EC 오 VX 고 EC 있 VX 다 EF . SF 특히 MAG 한국 NNP 을 JKO 포함 NNG 하 XSV ᆫ ETM 극동 NNP 아시아 NNP 권 XSN 의 JKG 중견 NNG 이나 JC 중소기업 NNG 을 JKO 대상 NNG 으로 JKB 이것 NP 이 JKS 더욱 MAG 극심 XR 하 XSA 다 EF . SF 그 MM 이유 NNG 는 JX 수출 NNG 기업 NNG 이 VCP 니 EC 영어 NNP 이메일 NNG 을 JKO 읽 VV 어야 EC 하 VX 고 EC , SP 반대 NNG 로 JKB 영어 NNP 는 JX 익숙 XR 하 XSA 지 EC 않 VX 으므로 EC 이메일 NNG 속 NNG 의 JKG 작 VA 은 ETM 변화 NNG 를 JKO 잘 MAG 눈치 NNG 채 VV 지 EC 못 MAG 하 XSV 어서 EC 이 VCP 다 EF . SF 예 NNG 를 JKO 들 VV 자면 EC ing@fucking.com W_EMAIL 이 VCP 라고 EC 거래처 NNG 에서 JKB 오 VV 던 ETM 이메일 NNG 을 JKO 중간 NNG 에서 JKB APT SL 기법 NNG 으로 JKB 가로채 VV inq@fucking.com W_EMAIL 식 NNB 으로 JKB 조그맣 VA-I ᆫ ETM 변화 NNG 를 JKO 주 VV 고 EC 거래처 NNG 이 VCP ᆫ데 EC 계좌 NNG 를 JKO 바꾸 VV 어 EC 송금 NNG 하 XSV 라고 EC 하 VV ᆫ다 EC 든지 JX ( SS ... SF ) SS 아니면 MAJ 이메일 NNG 안 NNG 에다 JKB 거래처 NNG 사이트 NNG 링크 NNG 를 JKO 심 VV 어 EC 두 VX 고 EC 급하 VA ᆫ ETM 일 NNG 있 VV 으니 EC 클릭 NNG 하 XSV 라 EC 하 VV ᆫ ETM 후 NNG ingfucking SL . SF com SL 을 JKO inqfucking.com W_URL 식 NNB 으로 JKB 바꾸 VV 고 EC 접속 NNG 하 XSV 면 EC 악성 NNG 코드 NNG 를 JKO 심 VV 어 EC 이메일 NNG 과 JC 암호 NNG 를 JKO 빼내 VV ᆫ ETM 후 NNG 온갖 MM 장난 NNG 질 XSN 을 JKO 치 VV 는 ETM 식 NNG . SF
|
||||
|
||||
2017 SN 년 NNB 12 SN 월 NNB 27 SN 일 NNB 기준 NNG 으로 JKB 현재 MAG 운영자 NNG 관리자 NNG 도 JX 전 NNG 운영자 NNG 뒈짓 NNP 에게 JKB 연락 NNG 이 JKS 안 MAG 되 VV 어 EC womad.me@gmail.com W_EMAIL 이메일 NNG 에 JKB 로그인 NNG 하 XSV ᆯ ETM 수 NNB 가 JKS 없 VA 어서 EC 도메인 NNG 갱신 NNG 이 JKS 불 XPN 가능 NNG 하 XSA 어서 EC https://womad.me W_URL 도메인 NNG 은 JX 버리 VV 고 EC https://womad.life W_URL 도메인 NNG 만 JX 쓰 VV ᆫ다는 ETM 공지 NNG 가 JKS 올라오 VV 었 EP 다 EF . SF . SF me SL 도메인 NNG 복구 NNG 에 JKB 실패 NNG 하 XSV 었 EP 습니다 EF . SF 앞 NNG 으로 JKB 는 JX . SF life SL 만 JX 가능 NNG 하 XSA ᆸ니다 EF . SF
|
||||
|
||||
seoh SL 는 JX 본인 NNG 의 JKG 성씨 NNG 와 JC 이름 NNG 첫 MM 이니셜 NNG 과 JKB 같 VA 고 EC , SP 914 SN 는 JX 서해순씨 NNP 의 JKG 생일 NNG 이 VCP ᆫ ETM 9 SN 월 NNB 14 SN 일 NNB 과 JKB 일치 NNG 하 XSV 는 ETM 점 NNG , SP 질문 NNG 은 JX 김광석 NNP 과 JC 그 MM 어머니 NNG 에 JKB 대하 VV ᆫ ETM 것 NNB 으로 JKB 부인 NNG ( SS 서해 NNP 순 NNG ) SS 에 JKB 관하 VV ᆫ ETM 언급 NNG 은 JX 전혀 MAG 없 VA 음 ETN 에 JKB 도 JX 불구 XR 하 XSV 고 EC 서해순 NNG 의 JKG 입장 NNG 에서 JKB 시아버지 NNG , SP 시어머니 NNG 이 VCP 라고 EC 호칭 NNG 하 XSV ᆫ ETM 점 NNG , SP 네이트 NNP 에서 JKB 동일 NNG 하 XSA ᆫ ETM 아이디 NNG seoh914@nate.com W_EMAIL 의 JKG 실명 NNG 이 JKS ' SS 서해 NNG 순 NNG ' SS 으로 JKB 확인 NNG 되 XSV ᆫ다는 ETM 사실 NNG 이 JKS 이러 XR 하 XSA ᆫ ETM 추측 NNG 을 JKO 뒷받침 NNG 하 XSV ᆫ다 EF . SF #1 W_HASHTAG #2@2 W_HASHTAG
|
||||
|
||||
클래스팅 NNP 은 JX 서비스 NNG 특징 NNG 상 XSN 저 XPN 연령 NNG 층 XSN 이용자 NNG 들 XSN 이 JKS 많 VA 은데 EC , SP 문제 NNG 는 JX 관심 NNG 종자 NNG 들 XSN 이 JKS 많 VA 어서 EC 도배 NNG 를 JKO 하 VV 는 ETM 유저 NNG 들 XSN 이 JKS 바글바글 MAG 하 XSV 다 EF . SF 클래스팅 NNP 에서 JKB 도 JX 악성 NNG 사용자 NNG 를 JKO 신고 NNG 하 XSV 는 ETM 클래스 NNP 를 JKO 운영 NNG 하 XSV 며 EC 적극 NNG 적 XSN 이 VCP ᆫ ETM 조치 NNG 를 JKO 취하 VV 고 EC 있 VX 었 EP 는데 EC , SP 전체 NNG 유저수 NNG 가 JKS 수백만 NR 명 NNB 대 NNB 가 JKC 되 VV 면서 EC 고객 NNG 센터 NNG 메일 NNG 이 VCP ᆫ ETM support@classting.com W_EMAIL 으로 JKB 신고 NNG 를 JKO 하 VV 게 EC 하 VX 고 EC 클래스 NNP 는 JX 사실 NNG 상 XSN 운영 NNG 을 JKO 중단 NNG 하 XSV 게 EC 되 VV 었 EP 다 EF . SF
|
||||
|
||||
그러 VV 다가 EC 1997 SN 년 NNB 에 JKB 무료 NNG 메일 NNG 로 JKB 유명 NNG 하 XSA ᆫ ETM "한메일넷" NNG 으로 JKB 오픈 NNG 하 XSV 면서 EC 본격 NNG 적 XSN 으로 JKB 성장세 NNG 에 JKB 접어들 VV 어서 EC 네임드 NNG 급 NNG 사이트 NNG 가 JKC 되 VV 었 EP 고 EC , SP 1999 SN 년 NNB 에 JKB 다음 NNG 카페 NNG 를 JKO 런칭 NNG 하 XSV 고 EC 다음 NNG 을 JKO 종합 NNG 포털 NNG 사이트 NNG 로 JKB 개편 NNG 하 XSV 며 EC 지금 NNG 의 JKG 이름 NNG 으로 JKB 바뀌 VV 었 EP 다 EF . SF 그 MM 흔적 NNG 으로 JKB 한동안 NNG 다음 NNG 의 JKG 이메일 NNG 주소 NNG 는 JX ID@hanmail.net W_EMAIL 이 VCP 었 EP 다 EF . SF 물론 MAG 지금 NNG 도 JX 저 MM 주소 NNG 로 JKB 도 JX 사용 NNG 이 JKS 가능 NNG 하 XSA 다 EF . SF
|
||||
|
||||
온리전 NNP 과 JKB 같 VA 은 ETM 동인 NNG 행사 NNG 를 JKO 소개 NNG 하 XSV 는 ETM 페이지 NNG 로 JKB , SP 이메일 NNG subculture@webtoonguide.com W_EMAIL 과 JC 트위터 NNP subculture SL _ SW wg SL 를 JKO 통하 VV 어서 EC 게시 NNG 되 XSV ᆫ다 EF . SF
|
||||
|
||||
해당 NNG 사건 NNG 과 JKB 관련 NNG 하 XSV 어 EC 초 NNG 여명 NNG 은 JX 당시 NNG ( SS 2016 SN 년 NNB 7 SN 월 NNB 23 SN 일 NNB ) SS 1 SN 차 NNB pdf SL 선 NNG 배송 NNG 이 JKS 고작 MAG 4 SN 일 NNB 남 VV 었 EP 던 ETM ' SS 크툴루 NNP 를 JKO 부르 VV 자 EF ! SF ' SS 크라우드 NNG 펀딩 NNG 환불 NNG 요청 NNG 의 JKG 편의 NNG 와 JC 사건 NNG 이 JKS 발생 NNG 하 XSV ᆫ ETM 시점 NNG 의 JKG 문제 NNG 를 JKO 고려 NNG 하 XSV 어 EC 심사숙고 NNG 후 NNG 에 JKB 후원 NNG 을 JKO 철회 NNG 하 XSV 려는 ETM 사람 NNG 들 XSN 을 JKO 대상 NNG 으로 JKB 하 VV 어 EC 환불 NNG 기간 NNG 을 JKO 7 SN 월 NNB 26 SN 일 NNB 에서 JKB 30 SN 일 NNB 로 JKB 연장 NNG 조치 NNG 하 XSV 었 EP 고 EC ( SS 그래서 MAJ 원래 MAG 27 SN 일 NNB 이 VCP 던 ETM 1 SN 차 NNB pdf SL 선 NNG 배송 NNG 이 JKS 그 MM 뒤 NNG 로 JKB 밀리 VV 었 EP 는데 EC 신청자 NNG 에 JKB 한 NNG 하 XSV 어 EC 먼저 MAG 배송 NNG 하 XSV 었 EP 다 EF ) SS , SP 그리고 MAJ 이 NP 로 JKB 인 NNG 하 XSV 어 EC 부족 NNG 하 XSA 어 EC 지 VX ᆫ ETM 후원금 NNG 은 JX 같 VA 은 ETM 해 NNG 8 SN 월 NNB 12 SN 일 NNB 까지 JX 별도 NNG 로 JKB 추가 NNG 후원 NNG 을 JKO 받 VV 기 ETN 로 JKB 하 VV 었 EP 다 EF . SF 환불 NNG 을 JKO 원하 VV ᆫ다면 EC 초 XPN 여명 NNG 공식 NNG 계정 NNG 이 VCP ᆫ ETM cympub@gmail.com W_EMAIL 으로 JKB 계좌 NNG 번호 NNG 와 JC 이름 NNG 을 JKO 보내 VV 면 EC 되 VV ᆫ다 EF . SF 헷갈리 VV 면 EC 직접 MAG 묻 VV-I 어 EC 보 VX 어도 EC 되 VV ᆫ다 EF . SF 참고 NNG 로 JKB 프로젝트 NNG 진행 NNG 이나 JC 2 SN 억 NR 이상 NNG 시 NNB 초 NNB 여명 NNP 컨벤션 NNG 을 JKO 개최 NNG 하 XSV ᆫ다는 ETM 약속 NNG 은 JX 이미 MAG 하 XSV 었 EP 기에 EC 설령 MAG 후원금 NNG 이 JKS 부족 NNG 하 XSA 어 EC 지 VX ᆫ다 EC 하 VV 더라도 EC 반드시 MAG 진행 NNG 하 XSV ᆫ다 EC 하 VV ᆫ다 EF . SF
|
||||
|
||||
이메일 NNG 자동 NNG 수집 NNG 을 JKO 막 VV 기 ETN 위하 VV 어 EC @ SW 대신 NNG ( SS at SL ) SS 를 JKO 넣 VV 는 ETM 경우 NNG 도 JX 있 VV 다 EF . SF 메일 NNG 주소 NNG 가 JKS admin@namu.com W_EMAIL 이 VCP 라면 EC admin SL at SL namu.com W_URL 식 NNB 으로 JKB 표현 NNG 하 XSV 는 ETM 것 NNB . SF
|
||||
|
||||
제작 NNG 자 XSN 는 JX 불명 NNG , SP 게임 NNG 내 NNB 에 JKB 는 JX tamo44@naver.com W_EMAIL 이 VCP 라고 EC 적히 VV 어 EC 있 VX 으나 EC 제작자 NNG 의 JKG 아이디 NNG 같 VA 은 ETM 정보 NNG 가 JKS 없 VA 다 EF . SF
|
||||
|
||||
혹시 MAG 이 VCP 라도 EC 자기 NNG 음원 NNG 이 JKS 멋대로 MAG 샤미 NNG 에 JKB 올라가 VV 어 EC 고통 NNG 을 JKO 받 VV 고 EC 있 VX 는 ETM 위키러 NNG 가 JKS 있 VV 다면 EC , SP music-copyright@service.alibaba.com W_EMAIL ( SS 알리바바 NNP ( SS 항저우 NNP ) SS 문화 NNG 창의 NNG 유한 NNG 공사 NNG 귀하 NNG 샤 NNG 미 NNG 웹 NNG 앞 NNG ) SS 주소 NNG 로 JKB 메일 NNG 을 JKO 보내 VV 어 EC 클레임 NNG 을 JKO 걸 VV 어 EC 보 VX 도록 EC 하 VX 자 EF . SF
|
||||
|
||||
저작 NNG 권 XSN ( SS 로고 NNG 사용 NNG 및 MAG 패 VV ᆫ ETM 굿 NNG 즈 NP 제작 NNG ) SS 및 MAG 입단 NNG 관련 NNG 문의 NNG 는 JX teamkongdoo@kongdoo.com W_EMAIL 로 JKB 문의 NNG 메일 NNG 을 JKO 보내 VV 면 EC 되 VV ᆫ다 EF . SF
|
||||
|
||||
* SW 미니 NNG 크레이지 NNG 아케이드 NNG : SP 2001 SN 년 NNB 에 JKB 넥슨 NNP 이 JKS 만들 VV 었 EP 던 ETM 플래시 NNG 게임 NNG ' SS 미니 NNG 크레이지 NNG 아케이드 NNG '( SS 이른바 MAG ' SS 미니 NNG 크 VA 어 EF ') SS 는 JX 정상 NNG 적 XSN 이 VCP ᆫ ETM 보통 NNG 게임 NNG 플레이 NNG 로 JKB 는 JX 보 VV ᆯ ETM 수 NNB 없 VA 지만 EC 플래시 NNG 파일 NNG 을 JKO 디컴파 NNG 일하 VV 어 EC 보 VX 면 EC pink SL & SW wdfuau SL 지영 NNP 아 JKV 사랑 NNG 하 XSV 어 EC NEOXNAZIS@HANAFOS.COM W_EMAIL ACTIONWOLF.NET W_URL 이 VCP 라는 ETM 메시지 NNG 를 JKO 보 VV ᆯ ETM 수 NNB 있 VV 다 EF . SF # SW
|
||||
|
||||
* SW 이메일 NNG 주소 NNG 는 JX 69ingchipmunks@me.com W_EMAIL 이 VCP 다 EF . SF
|
||||
|
||||
* SW 이치 NNG 하 XSV 라 EC 니나 NNP : SP 뉴스 NNP 기자 NNG . SF 11화 NNP 에서 JKB 대설주의보 NNP 를 JKO 알리 VV 는 ETM 역할 NNG 을 JKO 하 VV 었 EP 다 EF . SF 뉴스 NNG 에서 JKB 평소 NNG 에 JKB 입담 NNG 그대로 MAG " SSO 오늘 NNG 은 JX 눈 NNG 이 JKS 치 VV 어 EC 많이 MAG 오 VV 는 ETM 거 NNB 이 VCP 에요 EF 저 NP 의 JKG 설 NNB 열나 VV 게 EC 하세여 NNG 이 VCP 라고 EC 하 VV 는 ETM 것 NNB 은 JX 덤 NNG . SF 그리고 MAJ 메일 NNG 주소 NNG 는 JX CHEOHASEYO@ster.com W_EMAIL . SF
|
||||
|
||||
* SW 제 XPN 11 SN 회 NNB 에서 JKB 이화신 NNP 과 JKB 소개팅 NNG 하 XSV ᆫ ETM 극 NNG 중 NNB 한의사 NNG ' SS 한지민 NNP ' SS 은 JX 아래 NNG 와 JKB 같이 MAG 기재 NNG 되 XSV ᆫ ETM 극 NNG 중 NNB 명함 NNG 을 JKO 사용 NNG 하 XSV ᆫ다 EF . SF 소망 NNG 하 XSV ᆫ ETM 의원 NNG SOMANG SL Oriental SL Medical SL Clinic SL 원장 NNG 한지민 NNP T SL . SF 02 SN - SO 271 SN - SO 6384 SN F SL . SF 02 SN - SO 271 SN - SO 6389 SN M SL . SF 010 SN - SO 352 SN - SO 9574 SN E SL . SF hanjimin@somangomc.co.kr W_EMAIL 서울특별시 NNP 강남구 NNP 압구정로 NNP 114 SN 길 NNG 32 SN
|
||||
|
||||
구글 NNP 캘린더 NNG 에 JKB pgaq3ln86qrn1o7sbhpbcbvqt8@group.calendar.google.com W_EMAIL 을 JKO 등록 NNG 하 XSV 면 EC 각 MM 유성우 NNP 의 JKG 날짜 NNG 를 JKO 쉽 VA 게 EC 체크 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 다 EF . SF
|
||||
|
||||
이 NP 들 XSN 에게 JKB Mythbusters SL 에 JKB 대하 VV ᆫ ETM 감상 NNG 을 JKO 남기 VV 고 EC 싶 VX 다면 EC mythbusters@m5industries.com W_EMAIL 로 JKB 메일 NNG 을 JKO 보내 VV 자 EF . SF 단 MAJ , SP 답장 NNG 은 JX 기대 NNG 하 XSV 지 EC 말 VX 라고 EC 적히 VV 어 EC 있 VX 다 EF . SF
|
||||
|
||||
Terry SL Young SL . SF 모니타 NNG 동아시아 NNP 지사 NNG 의 JKG 대표 NNG 이 VCP ᆫ ETM 펀드메니저 NNG 로 JKB 한국 NNP 계 XSN 미국인 NNG 이 VCP 다 EF . SF 인적 NNG 사항 NNG 으로 JKB SSN SL 은 JX 279 SN - SO 74 SN - SO 7424 SN , SP 거주지 NNG 는 JX 5803 SN . SF Hampton SL forest SL way SL Fairfax SL . SF VA SL zz SL 080 SN E SL - SO mail SL 주소 NNG 는 JX ty6239721@mail.com W_EMAIL , SP 자택 NNG 과 JC 휴대폰 NNG 전화 NNG 는 JX 각각 MAG 1 SN - SO 703 SN - SO 623 SN - SO 9721 SN , SP 010 SN - SO 5998 SN - SO 9369 SN 이 VCP 다 EF . SF 한국 NNP 이름 NNG 은 JX 김진우 NNP 이 VCP 며 EC 1978 SN 년 NNB 7 SN 월 NNB 30 SN 일 NNB 생 XSN 으로 JKB 1984 SN 년 NNB , SP 7 SN 살 NNB 때 NNG 서울역 NNP 에서 JKB 발견 NNG 이 JKC 되 VV 어 EC 홀 NNG 트 VV 아동복 NNG 지회 NNG 를 JKO 통하 VV 어 EC 한국 NNP 계 XSN 양모 NNG 와 JC 미국인 NNG 남편 NNG 이 JKS 있 VV 는 ETM 가정 NNG 으로 JKB 입양 NNG 이 JKC 되 VV 었 EP 다 EF . SF 학력 NNG 은 JX 1988 SN 년 NNB Marshall SL Road SL Elementary SL School SL , SP 1992 SN 년 NNB longfellow SL Middle SL School SL , SP 1995 SN 년 NNB St SL . SF George SL ' SS s SL School SL , SP 2000 SN 년 NNB Wharton SL Shool SL 에서 JKB MBA SL 를 JKO 취득 NNG 하 XSV 었 EP 으며 EC , SP 2001 SN 년 NNB 올던 NNP 브라더스 NNG 입사 NNG , SP 2004 SN 년 NNB JP SL 삭스 NNP 입사 NNG 하 XSV 었 EP 다 EF . SF 마이클 NNP 장 NNP 과 JKB 대등 NNG 하 XSA ᆯ ETM 정도 NNG 로 JKB 초딩 NNG 적 XSN 이 VCP 면서 EC 여자 NNG 에 JKB 취하 VV 어 EC 있 VX 는 ETM 카사노바 NNP 같 VA 은 ETM 인물 NNG 이 VCP 다 EF . SF 고등학교 NNG 후배 NNG 이 VCP ᆫ ETM 에 IC 반 NNG 존스 NNP 를 JKO 비서 NNG 로 JKB 두 VV 고 EC 있 VX 으며 EC 일반 NNG 적 XSN 이 VCP ᆫ ETM 상하 NNG 관계 NNG 가 JKC 아니 VCN ᆫ ETM 친구 NNG 처럼 JKB 대하 VV ᆫ다 EF . SF 현재 MAG , SP 한민 NNP 은행 NNG 매각 NNG 에 JKB 관심 NNG 을 JKO 보이 VV 는 ETM 한편 NNG 으로 JKB 서동하 NNP 가 JKS 만들 VV 는 ETM 펀드 NNG 에 JKB 1 SN 조 NR 를 JKO 투자 NNG 하 XSV 기 ETN 로 JKB 결정 NNG 하 XSV 었 EP 다 EF . SF
|
||||
|
||||
32 SN 세 NNB 의 JKG 남성 NNG 으로 JKB 강주완 NNP 과 JC 오금실 NNP 의 JKG 아들 NNG 이 VCP 자 EC 강하윤 NNP 의 JKG 오빠 NNG 이 VCP 다 EF . SF 전화 NNG 번호 NNG 는 JX 010 SN - SO 5208 SN - SO 76 SN , SP 메일 NNG 은 JX kksng@mail.net W_EMAIL 이 VCP 다 EF . SF 2001 SN 년 NNB 에 JKB 상계 NNG 북 NNG 고등학교 NNG 를 JKO 졸업 NNG 하 XSV 었 EP 으며 EC , SP 한국 NNP 체육 NNG 대학 NNG 을 JKO 재학 NNG 하 XSV 던 ETM 시절 NNG 에 JKB 태권도 NNG 실력자 NNG 로 JKB 사 VV 어 EC 과거 NNG 에 JKB 전국 NNG 대회 NNG 를 JKO 다 MAG 휩쓸 VV 을 ETM 정도 NNG 로 JKB 실력 NNG 이 JKS 뛰어나 VA 었 EP 다 EF . SF 그러나 MAJ 국가 NNG 대표 NNG 선발전 NNG 에서 JKB 매수 NNG 되 XSV ᆫ ETM 심판 NNG 에 JKB 의하 VV 어 EC 같 VA 은 ETM 태권도 NNG 의 JKG 관장 NNG 의 JKG 아들 NNG 이 VCP 자 EC 동기 NNG 이 VCP ᆫ ETM 봉창수 NNP 와 JKB 함께 MAG 계속 MAG 판정패 NNG 를 JKO 당하 VV 었 EP 다 EF . SF 이 MM 일 NNG 로 JKB 관장 NNG 은 JX 자살 NNG 을 JKO 하 VV 었 EP 고 EC 아버지 NNG 이 VCP ᆫ ETM 강주완 NNP 은 JX 심판 NNG 을 JKO 고발 NNG 하 XSV 었 EP 다 EF . SF 결국 MAG 두 MM 사람 NNG 은 JX 탈락 NNG 을 JKO 하 VV 고 EC 말 VX 었 EP 고 EC 이 MM 일 NNG 로 JKB 주 VV ᆫ ETM 것 NNB 이 JKS 있 VV 으면 EC 그 NP 보다 JKB 더 MAG , SP 더 MAG , SP 더 MAG 받 VV 어 EC 내 VX 어야 EC 하 VX ᆫ다 EF ! SF 고 MM 생각 NNG 하 XSV 며 EC 돈 NNG 도 JX 백 NR 도 JX 없 VA 는 ETM 세상 NNG 이 JKS 싫 VA 어 EC 출세 NNG 를 JKO 위하 VV 어 EC 달리 VV 었 EP 다 EF . SF 가장 MAG 사랑 NNG 하 XSV 는 ETM 사람 NNG 은 JX 어머니 NNG 오금실 NNP 과 JC 여동생 NNG 강하윤 NNG 이 VCP 다 EF . SF 그러나 MAJ 가장 MAG 싫어하 VV 는 ETM 사람 NNG 은 JX 아버지 NNG 이 VCP ᆫ ETM 강주완 NNP 이 VCP ᆫ데 EC 항상 MAG 정의 NNG 와 JC 양심 NNG 을 JKO 내세우 VV 면서 EC 돈 NNG 에 JKB 허덕이 VV 는 ETM 모습 NNG 이 JKS 싫 VA 었 EP 던 ETM 것 NNB . SF 이 NP 에 JKB 따르 VV 어 EC 그 NP 의 JKG 모토 NNG 도 JX 아버지 NNG 처럼 JKB 살 VV 지 EC 말 VX 자 EF ! SF 가 VV 어 EC 되 VV 었 EP 다 EF ... SF
|
||||
|
||||
여담 NNG 으로 JKB 회원 NNG 가입 NNG 방식 NNG 이 JKS 좀 MAG 병신 NNG 같 VA 다 EC 싶 VX 을 ETM 정도 NNG 로 JKB 쉽 VA 다 EF . SF 이메일 NNG 치 VV 고 EC , SP 비밀 NNG 번호 NNG 치 VV 면 EC 끝 NNG 농담 NNG 이 JKC 아니 VCN 고 EC 존재 NNG 하 XSV 지 EC 않 VX 는 ETM 이메일 NNG 을 JKO 치 VV 어도 EC 회원 NNG 가입 NNG 이 JKC 되 VV ᆫ다 EF . SF 예 NNG 를 JKO 들 VV 면 EC A1@N.COM W_EMAIL 진짜 MAG 되 VV ᆫ다 EF . SF 앞서 MAG 말 NNG 하 XSV ᆫ ETM 리셋 NNP 마라 NNP 가 JKS 굉장히 MAG 흥행 NNG 하 XSV 는 ETM 이유 NNG . SF
|
||||
|
||||
* SW 마인애플 NNP 의 JKG 메일 NNG 주소 NNG 는 JX edward2065@naver.com W_EMAIL , SP 카운터 NNG 의 JKG 메일 NNG 주소 NNG 는 JX songukje123@naver.com W_EMAIL 이 VCP 다 EF . SF 유튜브 NNP 의 JKG 영상 NNG 설명 NNG 등 NNB 에서 JKB 도 JX 확인 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 다 EF . SF
|
||||
|
||||
support@squarenet.kr W_EMAIL 이나 JC 카카오톡 NNP 상담 NNG 센터 NNG ( SS @ SW 스퀘어 NNG 넷 NNG ) SS 에 JKB 문의 NNG 하 XSV 면 EC 견적 NNG 을 JKO 받 VV 을 ETM 수 NNB 있 VV 고 EC , SP 구매 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 다고 EC 하 VV ᆫ다 EF . SF
|
||||
|
||||
처리 NNG 방법 NNG 은 JX spookyrunner@hangame.com W_EMAIL 으로 JKB 현재 MAG 닉네임 NNG , SP 초기 NNG 화 XSN 되 XSV ᆫ ETM 예전 NNG 닉네임 NNG 을 JKO 보내 VV 면 EC 복구 NNG 하 XSV 어 EC 주 VX ᆫ다 EF . SF 공식 NNG 카페 NNG 에 JKB 글 NNG 을 JKO 올리 VV 어도 EC 처리 NNG 하 XSV 어 EC 주 VX ᆫ다 EF . SF
|
||||
|
||||
펜사 NNP 도 JX 플레이스 NNP 는 JX 온라인 NNG 으로 JKB 믹싱 NNG 서비스 NNG 를 JKO 제공 NNG 하 XSV 고 EC 있 VX 다 EF . SF 원 NNG 하 XSV 는 ETM 작품 NNG 의 JKG 방향 NNG 과 JC 타임 NNG 프레임 NNG , SP 그리고 MAJ 대중 NNG 에게 JKB 알리 VV 어 EC 지 VX ᆫ ETM 메이저 NNG 아티스트 NNG 이 VCP ᆫ지 EC , SP 인디펜던트 NNP 아티스트 NNG 이 VCP ᆫ지 EC 문서 NNG 에 JKB 적 VV 어 EC Herb@Pensadoplace.tv W_EMAIL 로 JKB 보내 VV 기 ETN 만 JX 하 VX 면 EC 되 VV ᆫ다 EF . SF 메이저 NNG 아티스트 NNG 와 JC 인디펜던트 NNP 아티스트 NNG 를 JKO 구분 NNG 하 XSV 는 ETM 이유 NNG 는 JX , SP 믹싱 NNG 서비스 NNG 의 JKG 가격 NNG 이 JKS 다르 VA 기 ETN 때문 NNB 이 VCP 다 EF . SF 문서 NNG 를 JKO 확인 NNG 하 XSV ᆫ ETM 펜사 NNP 도 JX 플레이스 NNP 측 NNB 이 JKS 가격 NNG 과 JC 가능 NNG 여부 NNG 에 JKB 대하 VV 어 EC 판단 NNG 하 XSV ᆫ ETM 후 NNG , SP 연락 NNG 을 JKO 하 VV 고 EC 최종 NNG 적 XSN 으로 JKB 합의 NNG 가 JKS 이루어지 VV 면 EC 믹싱 NNG 작업 NNG 이 JKS 시작 NNG 되 XSV ᆫ다 EF . SF
|
||||
|
||||
문제 NNG 가 JKS 생기 VV ᆫ ETM 책 NNG 에 JKB 대하 VV 어서 EC 는 JX 텀블벅 NNP 이나 JC 트위터 NNP 로 JKB 조치 NNG 를 JKO 취하 VV 고 EC 있 VX 는 ETM 중 NNB 이 VCP 며 EC , SP 트위터 NNP 를 JKO 안 MAG 하 VV 거나 EC 텀블벅 NNP 을 JKO 이용 NNG 하 XSV ᆯ ETM 줄 NNB 모르 VV 는 ETM 사람 NNG 들 XSN 을 JKO 위하 VV 어 EC 그 MM 외 NNB 에 JKB 도 JX egnisys@trpgclub.com W_EMAIL 으로 JKB 이메일 NNG 을 JKO 보내 VV 면 EC 확인 NNG 후 NNG 처리 NNG 하 XSV 어 EC 주 VX ᆫ다고 EC 하 VV ᆫ다 EF . SF 문제 NNG 가 JKS 생기 VV ᆫ ETM 책 NNG 에 JKB 대하 VV 어서 EC ᆫ JX 빨리 MAG 교환 NNG 받 VV 자 EF . SF
|
||||
|
||||
하지만 MAJ 업로드 NNG 직후 NNG 에 JKB 저작 NNG 권 XSN 컨텐츠 NNG 포함 NNG 만 JX 나타나 VV 고 EC 재생 NNG 이 JKS 가능 NNG 하 XSA 더라도 EC 차후 NNG 에 JKB 신고자 NNG 일본 NNP 레코드 NNG 협회 NNG ( SS tdn@riaj.or.jp W_EMAIL ) SS 에 JKB 의하 VV 어서 EC 동영상 NNG 이 JKS 게시 NNG 중단 NNG 되 XSV 고 EC 저작 NNG 권 XSN 경고 NNG 를 JKO 받 VV 을 ETM 수 NNB 있 VV 으니 EC 주의 NNG 가 JKS 필요 NNG 하 XSA 다 EF . SF
|
||||
|
||||
앱 NNG 센터 NNG 아이디 NNG ( SS 계정 NNG 설정 NNG 에서 JKB 확인 NNG 가능 NNG ) SS 와 JC 버그 NNG 상황 NNG , SP 스크린샷 NNP 등 NNB 을 JKO 첨부 NNG 하 XSV 어서 EC puccakakao@mobcrete.com W_EMAIL 로 JKB 이메일 NNG 을 JKO 보내 VV 면 EC 처리 NNG 하 XSV 어 EC 주 VX ᆫ다 EF . SF 좌절 NNG 하 XSV 지 EC 말 VX 고 EC 적극 NNG 적 XSN 으로 JKB 문의 NNG 하 XSV 자 EF . SF
|
||||
|
||||
게 NNG 이브 NNG 뉴웰 NNP 은 JX 유저 NNG 들 XSN 사이 NNG 에서 JKB Gaben SL ( SS 것 NNB 이 JKS 이븐 NNG , SP 게이 NNG 베 VV ᆫ ETM ) SS 이 VCP 라는 ETM 애칭 NNG 으로 JKB 불리 VV 고 EC 있 VX 다 EF . SF 이 MM Gaben SL 이 VCP 라는 ETM 애칭 NNG 은 JX 게 NNG 이브 NNG 뉴웰 NNP 이 JKS 팀 NNG 포트리스 NNP 2 SN 의 JKG 개발자 NNG 코멘터리 NNG 에서 JKB 자신 NNG 의 JKG 이메일 NNG 주소 NNG 이 VCP ᆫ ETM gaben@valvesoftware.com W_EMAIL 의 JKG gaben SL 을 JKO 단어 NNG 그대로 MAG 게이븐 NNG 이 VCP 라고 EC 발음 NNG 하 XSV 었 EP 는데 EC , SP 이것 NP 이 JKS 별명 NNG 으로 JKB 굳어지 VV 어 EC 버리 VX 게 EC 되 VV ᆫ ETM 것 NNB . SF 뉴 NNG 웰 NNG 자신 NNG 도 JX 이것 NP 을 JKO 알 VV 었 EP 는지 EC 포탈 NNG 2 SN 코멘터리부터 NNG 는 JX Gaben SL 이 VCP 라고 EC 발음 NNG 하 XSV 지 EC 않 VX 고 EC 한 MM 글자 NNG 씩 XSN 띄 VV 어서 EC ( SS G SL - SO A SL - SO B SL - SO E SL - SO N SL . SF 짓 VV 에 EC 이 MM 비 XPN 이 NR 엔 NNB . SF ) SS 발음 NNG 을 JKO 하 VV 고 EC 있 VX 다 EF . SF 관련 NNG 영상 NNG
|
||||
|
||||
원래 MAG 는 JX support@nordicgames.at W_EMAIL 으로 JKB 1 SN 편 NNB + SW 2 SN 편 NNB + SW 2 SN 편 NNB 의 JKG 모든 MM DLC SL 구매 NNG 이력 NNG , SP 혹은 MAG 프렌차이즈 NNG 팩 NNG 구매 NNG 이력 NNG 을 JKO 보내 VV 면 EC DE SL 키 NNG 를 JKO 보내 VV 어 EC 주 VX 고 EC 있 VX 었 EP 으나 EC 너무 MAG 많 VA 은 ETM 메일 NNG 이 JKS 오 VV 는 ETM 데 NNB 다가 JX 라이브러리 NNG 스크린샷 NNP 을 JKO 조작 NNG 하 XSV 어 EC 보내 VV 는 ETM 사람 NNG 까지 JX 나타나 VV 자 EC 스팀 NNG 계정 NNG 을 JKO 확인 NNG 하 XSV 어 EC 지급 NNG 하 XSV 는 ETM 사이트 NNG 를 JKO 만들 VV 었 EP 다 EF . SF
|
||||
|
||||
* SW syndrome SL 은 JX IRC SL 가 JKS 친목 NNG 분위기 NNG 로 JKB 흘러가 VV 어 EC 그것 NP 이 JKS 보 VV 기 ETN 싫 VA 어서 EC 일부러 MAG 나오 VV 었 EP 다고 EC 밝히 VV 었 EP 다 EF . SF 이 MM 사건 NNG 이전 NNG 에 JKB 유저 NNG 들 XSN 사이 NNG 에서 JKB syndrome SL 의 JKG 활동 NNG 저조 NNG 에 JKB 대하 VV ᆫ ETM 말 NNG 이 JKS 많 VA 었 EP 는데 EC , SP 그 MM 이유 NNG 가 JKS IRC SL 에서 JKB 나오 VV 느라 EC 소명 NNG 메일 NNG 이 VCP ᆫ ETM temp@namu.wiki W_EMAIL 접근 NNG 권한 NNG 을 JKO 받 VV 지 EC 못 MAG 하 VV 었 EP 기 ETN 때문 NNB . SF 해당 NNG 토론 NNG 의 JKG #249 W_HASHTAG #265 W_HASHTAG 참고 NNG . SF
|
||||
|
||||
* SW 한편 MAG 웹툰 NNP 갤러리 NNG 에서 JKB ᆫ JX 이전 NNG 부터 JX 이 MM 트윗 NNP 계정 NNG 을 JKO 주시 NNG 하 XSV 어 EC 오 VX 었 EP 는데 EC , SP 트위터 NNP 주소 NNG 부터 JX womadic SL 이 VCP 기 ETN 때문 NNB 이 VCP 다 EF . SF 그리고 MAJ 계정 NNG 문 NNG 의 JKG 주소 NNG 가 JKS womad001@gmail.com W_EMAIL 이 VCP ᆫ데 EC , SP 이 MM 메일 NNG 주소 NNG 는 JX ... SF
|
||||
|
||||
데이터 NNG 이관 NNG 문의 NNG 창구 NNG 는 JX mw_support@logickorea.co.kr W_EMAIL 로 JKB 하 VV 면 EC 되 VV ᆫ다 EF . SF
|
||||
|
||||
결국 MAG 환불 NNG 하 XSV 어 EC 달 VX 라는 ETM 항의 NNG 가 JKS 계속 NNG 되 XSV 어 EC unleashed@justice.net W_EMAIL 으로 JKB 환불 NNG 요청 NNG 을 JKO 보내 VV 면 EC 스킨 NNG 을 JKO 포함 NNG 하 XSV 어 EC 환불 NNG 하 XSV 어 EC 주 VX 었 EP 다 EF . SF
|
||||
|
||||
특히 MAG 마지막 NNG 항목 NNG 으로 JKB 인하 VV 어 EC 받 VV 는 ETM 오리 NNG 하 XSV ᆯ ETM 콘 NNG 손해 NNG 는 JX 막대 XR 하 XSA 므로 EC 고블린 NNP 뱅크 NNG 이용 NNG 에 JKB 는 JX 각별히 MAG 많 VA 은 ETM 주의 NNG 를 JKO 요하 VV 며 EC 이미 MAG 해당 NNG 사례 NNG 에 JKB 당하 VV ᆫ ETM 사람 NNG 은 JX cs@questgames.co.kr W_EMAIL 로 JKB 문의 NNG 를 JKO 넣 VV 어야 EC 만 JX 복구 NNG 가 JKC 되 VV ᆫ다고 EC 하 VV ᆫ다 EF . SF
|
||||
|
||||
GTA SL 온라인 NNG 플레이 NNG 중 NNB 일시 NNG 중지 NNG 메뉴 NNG ( SS ESC SL ) SS - SO 온라인 NNG - SO 플레이어 NNG - SO 핵 NNG 플레이어 NNG 의 JKG 닉네임 NNG - SO 신고 NNG - SO 부당 NNG 이용 NNG 으로 JKB 신고 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 다 EF . SF Rockstar SL 지원 NNG 관련 NNG 게시 NNG 글 NNG 을 JKO 참고 NNG 하 XSV 자 EF . SF 그러나 MAJ 이 MM 방법 NNG 을 JKO 통하 VV 어 EC 신고 NNG 하 XSV ᆫ다고 EC 하 VV 어도 EC 락스타 NNG 가 JKS 즉각 MAG 대응 NNG 하 XSV 는 ETM 것 NNB 이 JKC 아니 VCN 라 EC 크 VA ᆫ ETM 효과 NNG 를 JKO 기대 NNG 하 XSV 기 ETN ᆫ JX 힘들 VA 다 EF . SF 근래 NNG 에 JKB 치 NNG 트 VV 사용자 NNG 가 JKS 하도 MAG 많 VA 어서 EC 그렇 VA-I ᆫ지 EC 동영상 NNG 과 JC 함께 MAG 이메일 NNG 등 NNB 의 JKG 수단 NNG 으로 JKB 신고 NNG 하 XSV 어도 EC 처리 NNG 를 JKO 안 MAG 하 VV 는 ETM 것 NNB 같 VA 었 EP 으나 EC ... SF 실은 MAG 아예 MAG 이 VCP ᆫ ETM 게임 NNG 신고 NNG 외 NNB 의 JKG 신고 NNG 자체 NNG 를 JKO 안 MAG 보 VV ᆫ다 EF . SF 기존 NNG 의 JKG 치 NNG 트 VV 사용자 NNG 신고 NNG 전용 NNG 이메일 NNG 주소 NNG 이 VCP ᆫ ETM GTAOnlineBanhammer@rockstargames.com W_EMAIL 은 JX 물론 MAG , SP Rockstar SL 지원 NNG 홈페이지 NNG 에서 JKB 요청 NNG 제출 NNG 로 JKB 하 VV 는 ETM 신고 NNG 와 JC Rockstar SL 지원 NNG 이메일 NNG 로 JKB 보내 VV ᆫ ETM 신고 NNG 도 JX 처리 NNG 하 XSV 지 EC 않 VX 는다 EF . SF
|
||||
|
||||
문의 NNG 사항 NNG 은 JX mofabsc2@gmail.com W_EMAIL 로 JKB . SF
|
||||
|
||||
레드벨벳 NNP 에게 JKB 드디어 MAG 팬클럽 NNG 이름 NNG 이 JKS 생기 VV ᆫ다는 ETM SM SL 의 JKG 입장 NNG 이 JKS 나오 VV 었 EP 다 EF . SF SM SL 의 JKG 레드벨벳 NNP 담당자 NNG 메일 NNG 이 VCP ᆫ ETM redvelvet-fan@daum.net W_EMAIL 로 JKB 2017 SN 년 NNB 2 SN 월 NNB 5 SN 일 NNB 까지 JX 팬클럽 NNG 명 NNG 을 JKO 보내 VV 면 EC 레드벨벳 NNP 이 JKS 직접 MAG 팬클럽 NNG 명 NNG 을 JKO 선정 NNG 하 XSV 고 EC , SP 당첨자 NNG 에게 JKB 는 JX 싸인 NNG 시디 NNG 를 JKO 주 VV ᆫ다는 ETM 글 NNG 이 JKS 레드벨벳 NNP 공식 NNG 홈페이지 NNG 에 JKB 올라오 VV 었 EP 다 EF . SF 자세 XR 하 XSA ᆫ ETM 거 NNB ᆫ JX 링크 NNG 참 VV 고 EC . SF
|
||||
|
||||
잘 MAG 알리 VV 어 EC 지 VX 지 EC 않 VX 은 ETM 작 VA 은 ETM 아티스트 NNG 들 XSN 이 JKS nektwork@chzbk.com W_EMAIL 으로 JKB 자신 NNG 의 JKG 노래 NNG 를 JKO 보내 VV 면 EC 검토 NNG 를 JKO 하 VV ᆫ ETM 뒤 NNG 자신 NNG 의 JKG 채널 NNG 에 JKB 노래 NNG 와 JC 아티스트 NNG 프로필 NNG 주소 NNG 를 JKO 함께 MAG 올리 VV ᆫ다 EF . SF ( SS NCS SL 비슷 XR 하 XSA ᆫ ETM 것 NNB 을 JKO 만들 VV 어 EC 버리 VX 었 EP 다 EF ) SS
|
||||
|
||||
1997 SN 년 NNB 에 JKB 무료 NNG 메일 NNG 로 JKB 유명 NNG 하 XSA ᆫ ETM ' SS 한 MM 메일 NNG 넷 NNG ' SS 을 JKO 오픈 NNG 하 XSV 고 EC 검색 NNG 서비스 NNG 도 JX 도입 NNG 하 XSV 며 EC 본격 NNG 적 XSN 으로 JKB 성장 NNG 하 XSV 기 ETN 시작 NNG 하 XSV 었 EP 다 EF . SF 그 MM 이전 NNG 에 JKB 도 JX 메일 NNG 개념 NNG 이 JKS 없 VA 지 EC 는 JX 않 VX 었 EP 지만 EC 보통 NNG 은 JX PC SL 통신 NNG 을 JKO 통하 VV 어서 EC 메일 NNG 을 JKO 쓰 VV 어야 EC 하 VX 었 EP 는데 EC 당시 NNG 까지 JX 만 JX 하 VV 더라도 EC 정액 NNG 제 XSN 가 JKS 도입 NNG 되 XSV 었 EP 다고 EC 하 VV 지만 EC 여전히 MAG PC SL 통신 NNG 이용 NNG 으로 JKB 돈 NNG 이 JKS 적 VA 지 EC 않 VX 게 EC 나가 VX 던 ETM 데 NNB 다가 JX PC통신 NNP 에서 JKB 제공 NNG 하 XSV 던 ETM 메일 NNG 은 JX 대부분 NNG 해당 NNG PC SL 통신사 NNG 내부 NNG 용 XSN 으로 JKB 이용 NNG 하 XSV 던 ETM 메일 NNG 을 JKO 기반 NNG 으로 JKB 확장 NNG 하 XSV ᆫ ETM 것 NNB 이 VCP 라 EC 본격 NNG 적 XSN 이 VCP ᆫ ETM 메일 NNG 이 VCP 라 EC 하 VV 기 ETN 에 JKB 는 JX 이래저래 MAG 부족 NNG 하 XSA ᆫ ETM 점 NNG 이 JKS 있 VV 었 EP 기 ETN 때문 NNB 에 JKB 호응 NNG 을 JKO 얻 VV 으며 EC 본격 NNG 적 XSN 으로 JKB 거대 NNG 포털 NNG 사이트 NNG 화 XSN 가 JKS 진행 NNG 되 XSV 었 EP 고 EC , SP 1998 SN 년 NNB 말 NNB 에 JKB 회원 NNG 수 NNG 100 SN 만 NR 명 NNB 을 JKO 달성 NNG 하 XSV ᆫ ETM 이후 NNG 로 JKB 1999 SN 년 NNB 에 JKB 지금 NNG 의 JKG 이름 NNG 으로 JKB 바뀌 VV 었 EP 다 EF . SF 그 MM 흔적 NNG 으로 JKB 한동안 NNG 다음 NNG 의 JKG 이메일 NNG 주소 NNG 는 JX ID@hanmail.net W_EMAIL 이 VCP 었 EP 다 EF . SF 물론 MAG 지금 NNG 도 JX 저 MM 주소 NNG 로 JKB 도 JX 사용 NNG 이 JKS 가능 NNG 하 XSA 다 EF . SF ( SS 요즘 NNG 은 JX ID@daum.net W_EMAIL 을 JKO 권장 NNG 하 XSV 고 EC 있 VX 다 EF . SF ) SS 여담 NNG 이 VCP 지만 EC 이 MM 때 NNG 까지 JX 만 JX 하 VV 더라도 EC 인터넷 NNG 시장 NNG 이 JKS 벌어들이 VV 는 ETM 돈 NNG 이 JKS 변변 XR 하 XSA 지 EC 않 VX 은 ETM 데 NNB 반 NNG 하 XSV 어 EC 사업 NNG 투자비 NNG 때문 NNB 에 JKB 운영비 NNG 는 JX 월등 MAG 하 XSA 게 EC 많이 MAG 들 VV 어서 EC 다음 NNG 이 JKS 라이코스 NNP 에 JKB 인수 NNG 제의 NNG 를 JKO 하 VV 기 ETN 도 JX 하 VV 엇 EP 다는 ETM 얘기 NNG 도 JX 있 VA 었 EP 는데 EC 라이코스 NNP 측 NNB 에서 JKB 거절 NNG 하 XSV 었 EP 다 EF 이 VCP 라는 ETM 카더라 NNP 가 JKS 있 VV 다 EF . SF 물론 MAG 그 MM 이후 NNG 로 JKB 라이코스 NNP 가 JKS 다음 NNG 에게 JKB 먹히 VV 었 EP 던 ETM 것 NNB 을 JKO 생각 NNG 하 XSV 면 EC 격세지감 NNG . SF 실제로 MAG 독일 NNP 계 XSN 언론 NNG 재벌 NNG 이 VCP ᆫ ETM 베텔스만 NNP 의 JKG 도움 NNG 으로 JKB 서버 NNG 증설 NNG 하 XSV 고 EC 포털 NNG 사이트 NNG 사업 NNG 을 JKO 해내 VV ᆯ ETM 수 NNB 있 VV 었 EP 다는 ETM 후문 NNG 이 JKS 있 VV 던 ETM 거 NNB ᆯ JKO 보 VV 면 EC 사업 NNG 자금 NNG 투자 NNG 로 JKB 상당 NNG 하 XSA ᆫ ETM 애로 NNG 사항 NNG 이 JKS 꽃피 VV 었 EP 던 ETM 것 NNB 은 JX 사실 NNG 이 VCP ᆫ ETM 듯 NNB 하 VV 다 EF . SF 여하튼 MAG 베텔스만 NNP 은 JX 2002 SN 년 NNB 까지 JX 도 JX 다음 NNG 의 JKG 2 SN 대 NNG 주주 NNG 이 VCP 었 EP 지만 EC 2002 SN 년 NNB 에 JKB 주식 NNG 을 JKO 죄다 MAG 처분 NNG 하 XSV 어서 EC 현재 NNG 는 JX 별 MM 관계 NNG 가 JKS 없 VA 다 EF . SF 여담 NNG 이 VCP 지만 EC 이 MM 당시 NNG 에 JKB 심히 MAG 놀랍 VA 게 EC 도 JX 네이버 NNP 검색 NNG 엔진 NNG 을 JKO 쓰 VV 었었 EP 다 EF . SF 이 MM 때 NNG 는 JX 네이버 NNP 가 JKS 본격 XR 적 XSN 으로 JKB 포털 NNG 사업 NNG 을 JKO 벌이 VV 었 EP 던 ETM 시절 NNG 이 JKS 아니 VCN ᆫ ETM 삼성 NNP SDS SL 산하 NNG 의 JKG 기술 NNG 벤처 NNG 이 VCP 었 EP 던 ETM 시절 NNG 이 VCP 었 EP 기 ETN 때문 NNB . SF
|
||||
|
||||
* SW 일부 NNG 사람 NNG 들 XSN 에게 JKB 사전 NNG 예약 NNG 쿠폰 NNG 이 JKS 지급 NNG 되 XSV 지 EC 않 VX 었 EP 다 EF . SF 기종 NNG 과 NNG 번호 NNG 를 JKO 적 VV 어 EC help@mgameday.com W_EMAIL 으로 JKB 보내 VV 면 EC 해결 NNG 하 XSV 어 EC 주 VX ᆫ다고 EC 하 VV ᆫ다 EF . SF
|
||||
|
||||
Mut@ge.Mix W_EMAIL @ge W_MENTION ( SS 1995 SN ) SS
|
||||
|
||||
광고 NNG 회사 NNG 에서 JKB 몇 NR 년 NNB 근무 NNG 하 XSV ᆫ ETM 뒤 NNG 하이텔 NNP 군사동호 NNP 회원 NNG 들 XSN 과 JKB 어울리 VV 게 EC 되 VV 었 EP 다고 EC 하 VV ᆫ다 EF . SF 취미 NNG 는 JX 만화 NNG 와 JC 여행 NNG 이 VCP 라고 EC 하 VV ᆫ다 EF . SF SF SL , SP 판타지 NNG , SP 고대사 NNG 에 JKB 관심 NNG 이 JKS 많 VA 고 EC 언젠가 MAG SF SL 대하소설 NNG 을 JKO 쓰 VV ᆯ ETM 마음 NNG 을 JKO 아직 MAG 도 JX 품 VV 고 EC 있 VX 다고 EC 하 VV ᆫ다 EF . SF 하이텔 NNP 대화 NNG 명 NNG 은 JX ' SS 별빛 NNG 화살 NNG ' SS , SP 메일주소 NNP 는 JX amraam07@defence.co.kr W_EMAIL 으로 JKB 바뀌 VV 었 EP 다가 EC 현재 NNG 는 JX 디펜스 NNP 코리아 NNP 사이트 NNG 가 JKS 폐쇄 NNG 되 XSV ᆷ ETN 에 JKB 따르 VV 어 EC amraam07@empal.com W_EMAIL 으로 JKB 바뀌 VV 었 EP 다 EF . SF 최근 NNG 에 JKB 또다시 MAG 연세대 NNP 에 JKB 재학 NNG 중 NNB 이 VCP 라 EC 소식 NNG 이 JKS 뜸 XR 하 XSA 다는데 EC , SP 확인 NNG 을 JKO 요하 VV ᆫ다 EF . SF
|
||||
|
||||
2011 SN 년 NNB 5 SN 월 NNB 에 JKB 오픈 NNG 하 XSV ᆫ ETM 서비스 NNG 로 JKB 개인 NNG 이 JKS 보유 NNG 하 XSV ᆫ ETM 도메인 NNG ( SS pe SL . SF kr SL , SP co SL . SF kr SL , SP com SL , SP org SL 등 NNB 등 NNB ) SS 을 JKO 연결 NNG 하 XSV 어 EC 메일 NNG 을 JKO 이용 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 게 EC 하 VX 는 ETM 서비스 NNG 이 VCP 다 EF . SF 예 NNG 를 JKO 들 VV 어 EC 내 NP 가 JKS namu.wiki W_URL 도메인 NNG 을 JKO 소유 NNG 하 XSV 고 EC 있 VX 다면 EC id@namu.wiki W_EMAIL 식 NNB 의 JKG 이메일 NNG 을 JKO 사용 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 게 EC 하 VX 어 EC 주 VX ᆫ다 EF . SF
|
||||
|
||||
위키 NNP 게시판 NNG 이나 JX 보 VV ᆫ ETM 문서 NNG 의 JKG 토론 NNG 페이지 NNG 를 JKO 이용 NNG 하 XSV 시 EP ᆯ ETM 수 NNB 있 VA 습니다 EF . SF 혹은 MAG 법 NNG 적 XSN 이 VCP ᆫ ETM 문제 NNG 가 JKS 있 VA 거나 EC 정보 NNG 삭제 NNG 가 JKS 시급 XR 하 XSA ᆫ ETM 경우 NNG , SP 나무위키 NNP 관리인 NNG 의 JKG 메일 NNG 주소 NNG 이 VCP ᆫ ETM support@namu.wiki W_EMAIL 로 JKB 연락 NNG 하 XSV 시 EP ᆯ ETM 수 NNB 있 VA 습니다 EF . SF ( SS 이 MM 경우 NNG 나무위키 NNP : SP 투명 NNG 성 XSN 보고서 NNG 에 JKB 해당 NNG 메일 NNG 내용 NNG 이 JKS 기록 NNG 되 XSV ᆸ니다 EF . SF ) SS
|
||||
|
||||
2015 SN . SF 04 SN . SF 21 SN 공식 NNG 이메일 NNG 계정 NNG femiact2015@gmail.com W_EMAIL , SP 유튜브 NNP , SP 블로그 NNG 오픈 NNG
|
||||
|
||||
- SO 중력 NNG 구 NNG , SP 중력 NNG 동 MM 스킬 NNG 설명 NNG 정정 NNG ( SS 제보 NNG : SP yjb1018@naver.com W_EMAIL ) SS
|
||||
|
||||
* SW mylazybook@naver.com W_EMAIL 메일 NNG 의 JKG 주인 NNG
|
||||
|
||||
2002 SN 년 NNB 에 JKB 는 JX 귀 NNG 가 JKS 따갑 VA 은 ETM 남자 NNG 를 JKO 쓰 VV 었 EP 다 EF . SF 그리고 MAJ 코리아헤럴드 NNP 에서 JKB 문화 NNG 팀장 NNG 으로 JKB 있 VV 었 EP 다 EF . SF 코리아헤럴드 NNP 에 JKB 있 VV 을 ETM 때 NNG 쓰 VV 었 EP 던 ETM 메일 NNG 은 JX drsheen@heraldm.com W_EMAIL 이 VCP 다 EF . SF
|
||||
|
||||
그리고 MAJ 여행사 NNG 를 JKO 통하 VV ᆫ ETM 특가 NNG 항공 NNG 권 XSN 을 JKO 구매 NNG 하 XSV ᆫ ETM 경우 NNG 미리 MAG 수하물 NNG 을 JKO 구매 NNG 하 XSV 려면 EC 전화 NNG 로 JKB 구입 NNG 하 XSV 는 ETM 방법 NNG 밖에 JX ᆫ JX 없 VA 는데 EC 이 MM 또한 MAG 연결 NNG 이 JKS 잘 MAG 안 MAG 되 VV ᆫ다 EF . SF 오픈 NNG 시간 NNG 이 VCP ᆫ ETM 10 SN 시 NNB 에 JKB 딱 MAG 전화 NNG 를 JKO 하 VV 어도 EC 연결 NNG 이 JKS 불 XPN 가능 NNG 하 XSA ᆫ ETM 정도 NNG . SF 특가 NNG 항공 NNG 권 XSN 은 JX 여행사 NNG 를 JKO 통하 VV 어 EC 알아보 VV ᆫ ETM 후 NNG 제주항공 NNP 사이트 NNG 에서 JKB 구매 NNG 를 JKO 하 VV 면 EC 되 VV ᆫ다 EF . SF 또한 MAJ 정 NNP 급 NNG 하 XSV 면 EC 전화 NNG 연결 NNG 되 VV 기 ETN 를 JKO 기다리 VV 는 ETM 것 NNB 보다 JKB 는 JX 차라리 MAG 홈페이지 NNG 1 SN : SP 1 SN 상담 NNG 을 JKO 통하 VV 어 EC 질의 NNG 하 XSV 는 ETM 것 NNB 이 JKS 더 MAG 빠르 VA ᆯ ETM 것 NNB 이 VCP 다 EF . SF 오전 NNG 10 SN 시 NNB 전 NNG 에 JKB 질의 NNG 하 XSV 면 EC 퇴근 NNG 하 XSV 기 ETN 전 NNG 에 JKB 는 JX 답 NNG 이 JKS 오 VV ᆫ다 EF . SF 홈페이지 NNG 회원 NNG 을 JKO 가입 NNG 하 XSV 어야 EC 질의 NNG 가 JKS 가능 NNG 하 XSA ᆫ ETM 것 NNB 으로 JKB 보이 VV ᆫ다 EF . SF 비 XPN 회원 NNG 모드 NNG 로 JKB 문의 NNG 하 XSV 려고 EC 하 VX 면 EC 로그인 NNG 창 NNG 이 JKS 계속 MAG 나오 VV ᆯ ETM 다르 VA ᆷ ETN 이 VCP 다 EF . SF 항공 NNG 피해 NNG 를 JKO 호소 NNG 하 XSV ᆯ ETM 경우 NNG , SP 해당 NNG 사이트 NNG 로 JKB 들어가 VV 어서 EC ' SS 항공 NNG 교통 NNG 이용자 NNG 피해 NNG 구제 NNG 안내 NNG ' SS 를 JKO 다운 NNG 받 VV 어야 EC 하 VX ᆫ다 EF . SF 문 NNP 의 JKG 처 NNG 는 JX 070 SN - SO 7420 SN - SO 1699 SN , SP 혹은 MAG cyberdesk@jejuair.net W_EMAIL . SF 단 MAJ , SP 대응 NNG 은 JX 최악 NNG 이 VCP 다 EF . SF
|
||||
|
||||
사연 NNG 은 JX cinetown19@gmail.com W_EMAIL 혹은 MAG 다음 NNG 카페 NNG http://cafe.daum.net/cinetown19 W_URL
|
||||
|
||||
상담 NNG 파트 NNG 에서 JKB 는 JX bubryul@gmail.com W_EMAIL 으로 JKB 들어오 VV ᆫ ETM 상담 NNG 중 NNB 에서 JKB 재미있 VA 는 ETM 내용 NNG 을 JKO 고르 VV 어 EC 상담 NNG 을 JKO 하 VV ᆫ다 EF . SF
|
||||
|
||||
스크린샷 NNP 및 MAG 스팀 NNG 프로파일 NNP ( SS 보너스 NNG 지급 NNG 필요 NNG ) SS 에 JKB 대하 VV ᆫ ETM 링크 NNG 가 JKS 있 VA 는 ETM contest@smartlydressedgames.com W_EMAIL 으로 JKB 귀하 NP 의 JKG 항목 NNG 을 JKO 보내 VV 어 EC 주 VX 시 EP ᆸ시오 EF
|
||||
|
||||
www SL . SF heroesWTF SL . SF com SL 에 JKB 들어가 VV 어 EC 리플레이 NNP 와 JKB 함께 MAG 그 MM 순간 NNG 의 JKG 시간 NNG , SP 해당 NNG 상황 NNG 을 JKO 짤막하 VA 게 EC 설명 NNG 하 XSV 는 ETM 글 NNG 을 JKO 쓰 VV 어서 EC 제보 NNG 하 XSV 면 EC 되 VV ᆫ다 EF . SF 홈페이지 NNG 를 JKO 이용 NNG 하 XSV ᆯ ETM 수 NNB 없 VA 을 ETM 때 NNG 는 JX HeroesWTF@yahoo.com W_EMAIL 으로 JKB 제보 NNG 하 XSV 면 EC 되 VV ᆫ다 EF . SF
|
||||
|
||||
아스가르디 NNP 아 IC 한국 NNP 지부 NNG 를 JKO 계획 NNG 중 NNB 이 VCP 나 EC 아직 MAG 한국인 NNG 중 NNB 에 JKB 는 JX 아스가르디아인 NNG 이 VCP ᆷ ETN 을 JKO 밝히 VV 는 ETM 사람 NNG 이 JKS 없 VA 다고 EC 하 VV ᆫ다 EF . SF 만일 NNG 이 MM 글 NNG 을 JKO 읽 VV 는 ETM 가면 NNG asgardiakorea@gmail.com W_EMAIL 로 JKB 메일 NNG 을 JKO 보내 VV 어 EC 아스가르디아인 NNG 이 VCP ᆷ ETN 을 JKO 밝히 VV 도록 EC 하 VX 자 EF . SF
|
||||
|
||||
* SW 유로 NNP 트럭 NNG 2 SN 사연 NNG 을 JKO 싣 VV 고 EC : SP 매주 MAG 1 SN 회 NNB 정도 NNG ( SS 주로 MAG 주말 NNG ) SS 시청자 NNG 들 XSN 의 JKG 사연 NNG 을 JKO 받 VV 어서 EC 직접 MAG 동수 NNP 칸 NNG 이 JKS 녹음 NNG 하 XSV 어 EC 트럭 NNG 운전 NNG 중 NNB 에 JKB 라디오 NNG 처럼 JKB 틀 VV 어 EC 주 VX ᆫ다 EF . SF ( SS 사연 NNG 보내 VV 는 ETM 곳 NNG : SP methi@naver.com W_EMAIL ) SS
|
||||
|
||||
( SS 투고 NNG 는 JX monthlykwak@gmail.com W_EMAIL ) SS
|
||||
|
||||
Writer SL : SP 송 NNP 수연 NNG , SP 좋 VA 은 ETM 미 XPN love41@tubemusic.com W_EMAIL , SP jamogue@tubemusic.com W_EMAIL
|
||||
|
||||
한겨레 NNP 신문 NNG , SP 김미영 NNP 기자 NNG kimmy@hani.co.kr W_EMAIL 의 JKG 기사 NNG 를 JKO 바탕 NNG 으로 JKB , SP 네이버 NNP 프리다이빙 NNP 클럽 NNG F SL & SW C SL | SW 작성자 NNG 뽀다구님 NNP 의 JKG 글 NNG 에서 JKB 발췌 NNG 후 NNG 정리 NNG 하 XSV 었 EP 다 EF . SF
|
||||
|
||||
그 MM 후 NNG 활동 NNG 무대 NNG 를 JKO 서울 NNP 로 JKB 옮기 VV ᆫ ETM 후 NNG 1 SN 집 NNB 앨범 NNG Pia@arrogantempire.xxx W_EMAIL 를 JKO 발매 NNG 하 XSV ᆫ다 EF . SF 크래쉬 NNP 의 JKG 베이시스트 NNP 이 VCP 자 EC 보컬 NNG 리스트 NNG 이 VCP 었 EP 던 ETM 안흥찬 NNP 이 JKS 프로듀싱 NNG 하 XSV ᆫ ETM 음반 NNG 으로 JKB 헤비 NNG 하 XSV ᆫ ETM 기타리프 NNG 와 JC 냉소 NNG 에 JKB 가깝 VA 을 ETM 정도 NNG 의 JKG 보컬 NNG 이 JKS 일품 NNG 이 VCP 다 EF . SF 이 MM 음반 NNG 을 JKO 계기 NNG 로 JKB 그 NP 들 XSN 의 JKG 음악 NNG 이 JKS 하드코어 NNG 에 JKB 가깝 VA 다고 EC 착각 NNG 하 XSV 는 ETM 사람 NNG 도 JX 여럿 NNG 생기 VV 었 EP 을 ETM 정도 NNG . SF 그러나 MAJ 그 NP 들 XSN 의 JKG 인터뷰 NNG 를 JKO 듣 VV 어 EC 보 VX 면 EC 항상 MAG 음악 NNG 성향 NNG 은 JX 얼터너티브 NNP 에 JKB 더 MAG 가깝 VA 다고 EC 많이 MAG 말 NNG 하 XSV 었 EP 다 EF . SF
|
||||
|
||||
informaciondebusqueda@gmail.com W_EMAIL 혹은 MAG + SW 52 SN - SO 747 SN - SO 494 SN - SO 29 SN - SO 32 SN 혹은 MAG + SW 52 SN - SO 744 SN - SO 485 SN - SO 37 SN - SO 98 SN 로 JKB 우리 NP 에게 JKB 연락 NNG 바라 VV ᆸ니다 EF . SF
|
||||
|
||||
리뷰 NNG 부탁 NNG 을 JKO 받 VV 기 ETN 도 JX 하 VX ᆫ다 EF . SF 부탁 NNG 하 XSV 고 EC 싶 VX 은 ETM 리뷰 NNG 가 JKS 있 VV 다면 EC mkvillain@gmail.com W_EMAIL 으로 JKB 메일 NNG 을 JKO 보내 VV 자 EF . SF
|
||||
|
||||
abcdefg12345@naver.com W_EMAIL ( SS X SL ) SS
|
||||
|
||||
베릴륨 NNG 은 JX 발암 NNG 물질 NNG 이 VCP 자 EC 심각하 VA ᆫ ETM 만 NNG 성 XSN 폐 NNG 질환 NNG 을 JKO 유발 NNG 하 XSV 는 ETM 맹독 NNG 성 XSN 물질 NNG 이 VCP 다 EF . SF 그런 MM 관계 NNG 로 JKB 포 NNG 칼 NNG 사의 NNG 제품 NNG 중 NNB 베릴륨 NNG 트위터 NNP 를 JKO 적용 NNG 하 XSV ᆫ ETM Grande SL Utopia SL EM SL 스피커 NNG 의 JKG 사용자 NNG 매뉴얼 NNG 5 SN 페이지 NNG 에 JKB 는 JX 베릴륨 NNG 재질 NNG 트위터 NNP 를 JKO 사용 NNG 하 XSV ᆷ ETN 에 JKB 있 VV 어 EC 필요 NNG 하 XSA ᆫ ETM 안전 NNG 준수 NNG 사항 NNG 관련 NNG 내용 NNG 이 JKS 당당 MAG 하 XSA 게 EC ( SS ! SF ) SS 한 MM 페이지 NNG 를 JKO 가득 MAG 채우 VV 고 EC 있 VX 다 EF . SF ' SS 사포같 NNG 이 JKS 마모 NNG 를 JKO 일으키 VV ᆯ ETM 수 NNB 있 VV 는 ETM 물건 NNG 에 JKB 닿 VV 으면 EC 안 MAG 되 VV ᆫ다 EF ' SS , SP ' SS 피부 NNG 나 JC 눈 NNG 에 JKB 닿 VV 으면 EC 안 MAG 되 VV ᆫ다 EF ' SS , SP ' SS 호흡기 NNG 로 JKB 흡입 NNG 하 XSV 거나 EC 먹 VV 거나 EC 피부 NNG 를 JKO 통하 VV 어 EC 흡수 NNG 되 XSV 면 EC 절대 MAG 안 MAG 되 VV ᆫ다 EF ' SS , SP ' SS 트위터 NNP 모듈 NNG 의 JKG 그릴 NNG 을 JKO 웬만 XR 하 XSA 면 EC 벗기 VV 지 EC 말 VX 고 EC , SP 혹시 MAG 이 VCP 라도 EC 벗기 VV 고 EC 사용 NNG 하 XSV ᆫ ETM 용자 NNG 들 XSN 은 JX 후딱 MAG 다시 MAG 원 XPN 복 NNG 하 XSV 어라 EF ' SS , SP ' SS 아이 NNG 들 XSN 이 JKS 손대 VV 지 EC 못하 VX 게 EC 하 VV 어라 EF ' SS , SP ' SS 돔 NNG 이 JKS 손상 NNG 되 XSV 면 EC 스피커 NNG 와 JKB 같이 MAG 공급 NNG 되 XSV ᆫ ETM 보호 NNG 테이프 NNG 로 JKB 밀봉 NNG 하 XSV 고 EC 조각나 VV 어 EC 떨어지 VV ᆫ ETM 베릴륨 NNG 조각 NNG 은 JX 공급 NNG 되 XSV ᆫ ETM 접착 NNG 테이프 NNG 로 JKB 조심조심 MAG 모으 VV 어서 EC 비닐 NNG 봉지 NNG 에 JKB 밀봉 NNG 하 XSV 어 EC 두 VX ᆫ ETM 뒤 NNG 판매자 NNG 에게 JKB 연락 NNG 하 XSV 어 EC 베릴륨 NNG 조각 NNG 모으 VV 어 EC 두 VX ᆫ ETM 것 NNB 과 JC 트위터 NNP 모듈 NNG 을 JKO 함께 MAG 반납 NNG 하 XSV 고 EC 새 MM 트위터 NNP 모듈 NNG 로 JKB 교체 NNG 받 VV 어라 EF ' SS , SP ' SS 혹시 MAG 이 VCP 라도 EC 체내 NNG 에 JKB 흡수 NNG 되 XSV 면 EC 의사 NNG 에게 JKB 진찰 NNG 을 JKO 받 VV 어라 EF ' SS , SP ' SS 스피커 NNG 의 JKG 수명 NNG 이 JKS 끝나 VV 면 EC 절대 MAG 아무 MM 데 NNB 나 JX 버리 VV 지 EC 말 VX 고 EC 재 XPN 활용 NNG 센터 NNG 에 JKB 맡기 VV 어라 EF ' SS ... SF 뭐 IC 이런 MM 내용 NNG . SF 아예 MAG 베릴륨 NNG 관련 NNG 문의 NNG 를 JKO 받 VV 기 ETN 위하 VV ᆫ ETM 이메일 NNG 주소 NNG 가 JKS 따로 MAG 있 VV 다 EF . SF beryllium@focal.com W_EMAIL 이 VCP 다 EF . SF
|
||||
|
||||
접속 NNG 불능 NNG 의 JKG 사태 NNG 등 NNB 무어 NP 이 VCP ᆫ가 EC 말 NNG 을 JKO 걸 VV 고 EC 싶 VX 은 ETM 사람 NNG 은 JX yanggail@live.co.kr W_EMAIL 로 JKB 메일 NNG 을 JKO 보내 VV 면 EC 되 VV ᆫ다 EF . SF
|
||||
|
||||
제품 NNG 에 JKB 문의 NNG 사항 NNG 이 JKS 있 VV 을 ETM 경우 NNG support@mikrotik.co.kr W_EMAIL 로 JKB 문의 NNG 이메일 NNG 을 JKO 넣 VV 으면 EC 대체 NNG 적 XSN 으로 JKB 3 SN 영업일 NNG 안 NNG 에 JKB 는 JX 회신 NNG 이 JKS 오 VV 는 ETM 듯 NNB 하 XSA 다 EF . SF
|
||||
|
||||
결국 MAG 2006 SN 년 NNB 8 SN 월 NNB 28 SN 일 NNB , SP 네띠앙 NNP 은 JX 파산 NNG 처리 NNG 되 XSV 었 EP 다 EF . SF 진짜 MAG 망하 VV 었 EP 어요 EF . SF 이후 NNG 흑역사 NNP 가 JKS 되 VV 나 EF 싶 VX 더니 EC 서울이동통신 NNP 이 JKS 사들이 VV 어 EC 2007 SN 년 NNB 9 SN 월 NNB 5 SN 일 NNB 에 JKB 서비스 NNG 를 JKO 재개 NNG 하 XSV 었 EP 다 EF . SF 이후 NNG 포털 NNG 사이트 NNG 기능 NNG 을 JKO 차례 NNG 대로 JX 제거 NNG 하 XSV 어 EC 나가 VX 어서 EC , SP 지금 NNG 은 JX 인터넷 NNG 삐삐 NNG 사이트 NNG 가 JKC 되 VV 어 EC 있 VX 다 EF . SF 다만 MAG 이메일 NNG 서비스 NNG 는 JX 현재 NNG 에 JKB 도 JX 서비스 NNG 중 NNB 이 VCP 나 EC , SP 메일 NNG 주소 NNG 는 JX 010xxxxyyyy@netian.com W_EMAIL 으로 JKB 되 VV 어 EC 있 VX 다 EF . SF
|
||||
|
||||
* SW 행사 NNG 참가 NNG 신청 NNG 은 JX “ SS 이메일 NNG : SP kocostock@naver.com W_EMAIL ” SS 과 JC “ SS 코코스 NNP 탁 MAG 대표 NNG 번호 NNG : SP 1833 SN - SO 5384 SN ” SS , SP “ SS 카카오톡 NNP 아이디 NNG : SP 코코스 NNP 탁 MAG ” SS 으로 JKB 하 VV 면 EC 되 VV ᆫ다 EF . SF
|
||||
|
||||
이메일 NNG 도 JX 적절 XR 하 XSA 게 EC waiting@kbs.co.kr W_EMAIL . SF 이메일 NNG 주소 NNG 는 JX 이름 NNG ' SS 대기 NNG ' SS 뿐 JX 만 JX 아니 VCN 고 EC 수습 NNG 기자 NNG 가 JKS 얼마 NNG 안 MAG 되 VV 었 EP 을 ETM 때 NNG ' SS 기자 NNG 이 VCP 라는 ETM 것 NNB 은 JX 말 NNG 하 XSV 는 ETM 것 NNB 보다 JKB 많이 MAG 듣 VV 어야 EC 하 VX 는 ETM 직업 NNG ' SS 이 VCP 며 EC " SSO 더 MAG 오래 MAG 기다리 VV 자 EC , SP 그런 MM 사람 NNG 이 JKC 되 VV 자는 ETM 뜻 NNG 에서 JKB 생각 NNG 에서 JKB 그렇 VA-I 게 EC 지 VX 었 EP 다 EF " SSC 고 JKQ 설명 NNG 하 XSV 었 EP 다 EF . SF
|
||||
|
||||
* SW 스타크래프트 NNP 관련 NNG 인터랙티브 NNG 프로그램 NNG 의 JKG 시초 NNG 는 JX 생 XPN 방송 NNG CU@Battle.net W_EMAIL 이 VCP 며 EC , SP 정성한 NNP , SP 이화선 NNP , SP 강도경 NNP , SP 김정민 NNP 등 NNB 이 JKS 진행 NNG 하 XSV 었 EP 으며 EC 당시 NNG 최고 NNG 의 JKG 인기 NNG 를 JKO 누리 VV 면서 EC 이화선 NNP 이 JKS 일약 MAG 스타 NNG 팬 NNG 들 XSN 의 JKG 히로인 NNG 으로 JKB 자리 NNG 잡 VV 은 ETM 계기 NNG 가 JKC 되 VV 었 EP 다 EF . SF 이후 NNG 염선희 NNP 로 JKB 교체 NNG 되 XSV 었 EP 으며 EC , SP 불미 XR 스럽 XSA 은 ETM 사건 NNG 으로 JKB 능숙 XR 하 XSA ᆫ ETM 진행 NNG 을 JKO 보이 VV 어 EC 주 VX 던 ETM 정성한 NNP 이 JKS 하차 NNG 하 XSV 면서 EC 프로그램 NNG 이 JKS 급격 XR 하 XSA ᆫ ETM 인기 NNG 저하 NNG 와 JKB 함께 MAG 결국 MAG 종영 NNG 되 XSV 었 EP 다 EF . SF 이후 NNG 2007 SN 년 NNB 이 JKC 되 VV 어서 EC 야 JX 아이 NNG 러브 NNG 스타 NNG 를 JKO 방송 NNG 하 XSV 었 EP 지만 EC MBC SL 게임 NNG 의 JKG 배 NNG 넷 NNG 어택 NNG 과 JKB 비교 NNG 되 XSV 고 EC 까이 NNG 이 VCP 고 EC 까이 NNG 이 VCP 면서 EC 종영 NNG 되 XSV 었 EP 으며 EC 생방송 NNP 라이브 NNG 배틀 NNG 과 NNG 홍진호 NNP 공군 NNG 입대 NNG 기념 NNG 으로 JKB 방송 NNG 되 XSV ᆫ ETM 라이브 NNG 홍 NNP 쇼 NNG 로 JKB 이어지 VV 고 EC 있 VX 다 EF . SF 비교 NNG 영상 NNG
|
||||
|
||||
팬 NNG 아트 NNG 및 MAG 미스터리 NNG 사건 NNG 이나 JC 제보 NNG 는 JX briojae@gmail.com W_EMAIL 으로 JKB 보내 VV 면 EC 되 VV ᆫ다 EF . SF 팬 NNG 아트 NNG 는 JX 토마토 NNG 미스터리 NNG 콘서트 NNG 생 XPN 방송 NNG 전 NNG 에 JKB 올리 VV 어야 EC 그날 NNG 에 JKB 보 VV ᆯ ETM 수 NNB 있 VV 다 EF . SF
|
||||
|
||||
피아 NNG 의 JKG 1 SN 집 NNB 앨범 NNG Pia@ArrogantEmpire.xxx W_EMAIL 의 JKG 수록 NNG 곡 NNG 이 VCP 다 EF . SF 1 SN 집 NNB 활동 NNG 당시 NNG 피아 NNG 의 JKG 가장 MAG 대표 NNG 곡 NNG 이 VCP 라고 EC 하 VV ᆯ ETM 정도 NNG 로 JKB 팬 NNG 들 XSN 에게 JKB ᆫ JX 유명 NNG 하 XSA ᆫ ETM 곡 NNG 이 VCP 다 EF . SF 광폭 NNG 하 XSA 게 EC 내지르 VV 는 ETM 스크리밍 NNP 과 JC 빠르 VA ᆫ ETM 랩 NNG , SP 그리고 MAJ 무미건조 NNG 하 XSV ᆫ ETM 클린 NNG 보컬 NNG 이 JKS 서로 MAG 치 VV 고 EC 빠지 VV 듯 EC 하 VV 는 ETM 스타일 NNG 의 JKG 곡 NNG 이 VCP 다 EF . SF 음원 NNG
|
||||
|
||||
* SW 드레스덴 NNP 연설문 NNG 을 JKO 다운 NNG 받 XSV 은 ETM 경로 NNG 는 JX 김휘 NNP 종 NNP 전 MM 행정관 NNG 의 JKG 이메일 NNG 로 JKB , SP 해당 NNG 태블릿 NNG PC SL 는 JX 김휘종 NNP 이 JKS 사용 NNG 하 XSV ᆫ ETM 것 NNB 이 VCP 다 EF : SP 주간조선 NNP 이 JKS 2017 SN 년 NNB 10 SN 월 NNB 28 SN 일 NNB 기사 NNG #에서 W_HASHTAG , SP 최순실 NNP 이 JKS 수정 NNG 하 XSV 었 EP 을 ETM 것 NNB 으로 JKB 추정 NNG 되 XSV 는 ETM 이메일 NNG 계정 NNG 이 JKS kimpa2014@gmail.com W_EMAIL 이 VCP 며 EC , SP 이것 NP 이 JKS 김휘 NNP 종 NNP 전 MM 행정관 NNG 명의 NNG 의 JKG 이메일 NNG 이 VCP 라고 EC 보도 NNG 하 XSV ᆫ다 EF . SF 이 NP 는 JX 김휘종 NNP 씨 NNB 가 JKS 검찰 NNG 진술 NNG 과정 NNG 에서 JKB 인정 NNG 하 XSV ᆫ ETM 상황 NNG . SF 그러나 MAJ 이 MM 사실 NNG 만 JX 으로 JKB , SP 해당 NNG 태블릿 NNG 을 JKO 김휘 NNP 종 NNG 이 JKS 사용 NNG 하 XSV 었 EP 다고 EC 판단 NNG 하 XSV 기 ETN 는 JX 이르 VA 다 EF . SF 이 NP 와 JKB 관련 NNG 되 XSV ᆫ ETM 포렌식 NNG 보고서 NNG 의 JKG 기록 NNG #을 W_HASHTAG 살펴보 VV 면 EC , SP 자기 NP 자신 NNG 에게 JKB 이메일 NNG 을 JKO 쓰 VV ᆫ ETM 형태 NNG 로 JKB 쓰이 VV 어 EC 지 VX ᆫ ETM 이 MM 이메일 NNG 들 XSN 에 JKB 는 JX , SP 청와대 NNP 행정관 NNG 들 XSN 이 JKS 내용 NNG 을 JKO 숨기 VV 기 ETN 위하 VV 어 EC 일반 NNG 연예 NNG 기사 NNG 등 NNB 을 JKO 첫머리 NNG 에 JKB 띄우 VV 는 ETM 방식 NNG 과 JKB , SP 중간중간 NNG 드레스덴 NNP 연설문 NNG 의 JKG 수정 NNG 되 XSV ᆫ ETM 내용 NNG 이 JKS 그대로 MAG 적히 VV 어 EC 있 VX 는 ETM 방식 NNG 이 JKS 번갈 VV 어 EC 나타나 VV ᆫ다 EF . SF 이 NP 는 JX 해당 NNG 이메일 NNG 에 JKB 두 MM 사람 NNG 이상 NNG 이 JKS 접속 NNG 하 XSV 어 EC 한 MM 계정 NNG 으로 JKB 파일 NNG 을 JKO 주고받 VV 으며 EC 누구 NP 이 VCP ᆫ가 EC 에게 JKB 수정 NNG 을 JKO 지시 NNG 하 XSV ᆫ ETM 정황 NNG 으로 JKB 추정 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 다 EF . SF 검찰 NNG 이 JKS kimpa2014@gmail.com W_EMAIL 을 JKO 공용 NNG 게시판 NNG 성격 NNG 의 JKG 이메일 NNG 로 JKB 판단 NNG 하 XSV 고 EC 있 VX 는 ETM 것 NNB 과 JKB 일치 NNG 하 XSV 는 ETM 정황 NNG 이 VCP 기 ETN 도 JX 하 VX 다 EF . SF 때문 NNB 에 JKB , SP 이메일 NNG 계정 NNG 의 JKG 명의 NNG 만 JX 으로 JKB 태블릿 NNG PC SL 의 JKG 실 NNG 사용자 NNG 를 JKO 정확히 MAG 추적 NNG 하 XSV ᆯ ETM 수 NNB 는 JX 없 VA 으며 EC , SP 이 MM 이메일 NNG 이 JKS 쓰이 VV ᆫ ETM 다양 NNG 하 XSA ᆫ ETM 정황 NNG 을 JKO 고려 NNG 하 XSV 어 EC 판단 NNG 하 XSV 어야 EC 하 VX ᆫ다 EF . SF 또한 MAG , SP SNS SL 팀 NNG 과 JKB 마찬가지 NNG 로 JKB , SP 김휘 NNP 종 NNG 행정관 NNG 이 JKS 드레스덴 NNP 연설문 NNG 을 JKO 미리 MAG 받 VV 어 EC 보 VX 고 EC 또 MAG 수정 NNG 을 JKO 지시 NNG 하 XSV 어야 EC 하 VX ᆯ ETM 이유 NNG 가 JKS 존재 NNG 하 XSV 지 EC 않 VX 을 ETM 뿐 NNB 더러 JKB , SP 해당 NNG 포렌식 NNG 보고서 NNG 에서 JKB "' SS 김 NNG 팀 NNG ( SS 김휘 NNP 종 NNG )' SS 이 JKS ' SS 선생 NNG 님 XSN ( SS 카카오톡 NNP 이름 NNG 으로 JKB 미루 VV 어 EC 보 VX 었 EP 을 ETM 때 NNG , SP 최순실 NNP )' SS 의 JKG 컨펌 NNG 을 JKO 받 VV 는다 EF " SS 는 ETM 내용 NNG 이 JKS 들 VV 어 EC 있 VX 어 EC , SP 최순실이 NNP 이메일 NNG 계정 NNG 을 JKO 함께 MAG 사용 NNG 하 XSV 고 EC 있 VX 었 EP 을 ETM 가능 NNG 성 XSN 이 JKS 있 VV 다고 EC 여기 VV 어 EC 지 VX ᆫ다 EF . SF # SW 계정 NNG 내 NNB 에 JKB 저장 NNG 되 XSV ᆫ ETM 이메일 NNG 만 JX 을 JKO 보이 VV 어 EC 주 VX 며 EC , SP 목록 NNG 상 NNG huipas@naver.com W_EMAIL 은 JX ' SS 보내 VV ᆫ ETM 사람 NNG ' SS 이 JKC 아니 VCN ᆫ ETM ' SS 받 VV 은 ETM 사람 NNG ' SS 이 VCP 다 EF . SF 이 MM 메일 NNG 의 JKG 내용 NNG 이 JKS ' SS 삼성 NNP 모바일 NNG 에서 JKB 전송 NNG 하 XSV 었 EP 습니다 EF ' SS 라고 JKQ 되 VV 어 EC 있 VX 으며 EC , SP 그 MM 아래 NNG 에 JKB 회신 NNG 이 VCP 라는 ETM 기록 NNG 이 JKS 존재 NNG 하 XSV 는 ETM 측면 NNG 에서 JKB , SP 태블릿 NNG PC SL 를 JKO 통하 VV 어 EC 이미 MAG 받 VV 은 ETM 메일 NNG 에 JKB 대하 VV ᆫ ETM 회신 NNG 형태 NNG 로 JKB 다른 MM 이 NP 에게 JKB 다시 MAG 전송 NNG 하 XSV 었 EP 다고 EC 추정 NNG 하 XSV ᆯ ETM 수 NNB 있 VV 다 EF . SF
|
||||
|
||||
magibon.com W_URL 의 JKG 사이트 NNG 도메인 NNG 은 JX enom SL 이 VCP 라는 ETM 도메인 NNG 호스팅 NNP 업체 NNG 를 JKO 통하 VV 어 EC 개설 NNG 되 XSV 었 EP 으며 EC , SP 도메인 NNG 등록 NNG 조회 NNG 를 JKO 하 VV 어 EC 보 VX 면 EC joakim@danung.com W_EMAIL 로 JKB Jakim SL Danung SL 의 JKG 메일 NNG 주소 NNG 가 JKS 나오 VV ᆫ다 EF . SF 사실 MAG magibon.com W_URL 에서 JKB 플래시 NNG 플레이어 NNG 를 JKO 끄 VV 거나 EC 설치 NNG 하 XSV 지 EC 않 VX 은 ETM 상태 NNG 로 JKB 접속 NNG 시 NNG " SS A SL viral SL , SP social SL digital SL culture SL experiment SL by SL Joakim SL Danung SL ( SS Joakim SL Danung SL 에 JKB 의하 VV ᆫ ETM 바 NNB 이렇 VA-I ᆯ EC , SP 소셜 NNG 디지털 NNG 문화 NNG 실험 NNG )" SS 이 VCP 라는 ETM 문구 NNG 가 JKS 나오 VV 는 ETM 거 NNB ᆯ JKO 보 VV ᆯ ETM 수 NNB 있 VV 다 EF . SF Joakim SL Danung SL 가 JKS 자신 NNG 의 JKG 홈페이지 NNG 에서 JKB 도 JX 직접 MAG 낚시 NNG 이 VCP 라고 EC 밝히 VV 었 EP 다 EF . SF 현재 NNG 는 JX 사이트 NNG 도메인 NNG 이 JKS 만료 NNG 되 XSV 었 EP 지만 EC 아카이브 NNG 참조 NNG . SF
|
||||
|
||||
예 NNG 를 JKO 들 VV 어 EC sender@gmail.com W_EMAIL 계정 NNG 의 JKG 사용자 NNG 가 JKS receiver@naver.com W_EMAIL 계정 NNG 으로 JKB 이메일 NNG 을 JKO 보내 VV ᆫ다고 EC 하 VV 자 EF . SF
|
||||
|
||||
사연 NNG 은 JX sbsanaconda@gmail.com W_EMAIL 으로 JKB 보내 VV 면 EC 되 VV ᆫ다 EF . SF
|
||||
|
||||
2015 SN 년 NNB 2 SN 월 NNB 21 SN 일 NNB 기준 NNG 으로 JKB , SP psione@blizzard.com W_EMAIL 으로 JKB 핵 NNG 사용자 NNG 와 JKB 의 JKG 리플레이 NNP 를 JKO 보내 VV 어 EC 주 VX 면 EC 해당 NNG 계정 NNG 을 JKO 정지 NNG 시키 XSV 어 EC 주 VX ᆫ다고 EC 하 VV ᆫ다 EF . SF
|
||||
|
||||
* SW 오답 NNG 노트 NNG ( SS 매주 MAG 수요일 NNG ) SS : SP rabongksh3@gmail.com W_EMAIL 로 JKB 리플레이 NNP 를 JKO 첨부 NNG 하 XSV 어 EC 보내 VV 면 EC 유저 NNG 들 XSN 의 JKG 리플레이 NNP 로 JKB 피드백 NNG 을 JKO 하 VV 어 EC 주 VX ᆫ다 EF . SF 하루 NNG 동안 NNG 하 XSV 어 EC 주 VX 는 ETM 오답 NNG 노트 NNG 의 JKG 개수 NNG 는 JX 총 MM 15 SN 개 NNB 로 JKB 먼저 MAG 보내 VV ᆫ ETM 순 NNG 으로 JKB 진행 NNG 되 XSV 므로 EC 받 VV 고 EC 싶 VX 다면 EC 미리 MAG 보내 VV 는 ETM 것 NNB 이 JKS 좋 VA 다 EF . SF
|
||||
|
||||
* SW 태블릿 NNG PC SL 이메일 NNG 계정 NNG 과 JC 태블릿 NNG 에 JKB 저장 NNG 되 XSV ᆫ ETM 한글 NNG 파일 NNG 일부 NNG 의 JKG 문서 NNG 통계 NNG 에 JKB 나오 VV 는 ETM 작성자 NNG ' SS 유연 XR ' SS : SP 해당 NNG 내용 NNG 은 JX 정유라 NNP 의 JKG 개명 NNG 전 MM 이름 NNG 이 VCP 다 EF . SF 일부 NNG 는 JX ' SS 유연 XR ' SS 이 JKS 기록 NNG 되 XSV ᆫ ETM zixi9876@gmail.com W_EMAIL 이 JKC 아니 VCN ᆫ ETM , SP ' SS 연 NNG 이 JKS ' SS 가 JKS 기록 NNG 되 XSV ᆫ ETM greatpark1819@gmail.com W_EMAIL 에 JKB 집중 NNG 하 XSV 어 EC , SP 이것 NP 이 JKS 정유라 NNP 가 JKC 아니 VCN ᆫ ETM 다른 MM 사람 NNG 이 VCP 라고 EC 주장 NNG 하 XSV 기 ETN 도 JX 하 VX ᆫ다 EF . SF 해당 NNG 내용 NNG 에 JKB 대하 VV ᆫ ETM 반론 NNG 은 JX 조작 NNG 설 XSN 내용 NNG 부분 NNG 에서 JKB 후술 NNG . SF
|
||||
|
||||
문제점 NNG 들 XSN 은 JX oldzombie@gmail.com W_EMAIL 로 JKB 알리 VV 어 EC 주 VX 면 EC 고치 VV 어 EC 주 VX ᆫ다 EF . SF
|
||||
|
||||
322
README.md
322
README.md
|
|
@ -1,322 +0,0 @@
|
|||
# Kiwi : 지능형 한국어 형태소 분석기(Korean Intelligent Word Identifier)
|
||||
|
||||

|
||||
|
||||
x86_64:
|
||||
[](https://github.com/bab2min/Kiwi/actions)
|
||||
[](https://github.com/bab2min/Kiwi/actions)
|
||||
[](https://github.com/bab2min/Kiwi/actions)
|
||||
[](https://github.com/bab2min/Kiwi/actions)
|
||||
|
||||
Other:
|
||||
[](https://github.com/bab2min/Kiwi/actions)
|
||||
[](https://github.com/bab2min/Kiwi/actions)
|
||||
[](https://github.com/bab2min/Kiwi/actions)
|
||||
|
||||
Kiwi는 빠른 속도와 범용적인 성능을 지향하는 한국어 형태소 분석기 라이브러리입니다. 한국어 처리에 관심 있는 사람이면 누구나 쉽게 사용할 수 있도록 오픈 소스로 공개 중이며, C++로 구현된 코어 라이브러리를 래핑하여 다양한 프로그래밍 언어에 사용할 수 있도록 준비 중입니다.
|
||||
|
||||
형태소 분석은 세종 품사 태그 체계를 기반으로 하고 있으며 모델 학습에는 세종계획 말뭉치와 모두의 말뭉치를 사용하고 있습니다. 웹 텍스트의 경우 약 87%, 문어 텍스트의 경우 약 94% 정도의 정확도로 한국어 문장의 형태소를 분석해 낼 수 있습니다. 또한 간단한 오타의 경우 모델 스스로 교정하는 기능을 지원합니다(0.13.0버전 이후).
|
||||
|
||||
아직 부족한 부분이 많기에 개발자분들의 많은 관심과 기여 부탁드립니다.
|
||||
|
||||
## 특징
|
||||
|
||||

|
||||
|
||||
텍스트 분석 속도가 다른 한국어 형태소분석기들과 비교하여 꽤 빠른 편입니다. 자세한 벤치마크 결과는 [이 문서](https://docs.google.com/spreadsheets/d/1XmuYKDpV5d_WTGNgY73BJGHZ8_AUZKQXpEys819qH2Y/edit?gid=1956520937#gid=1956520937)에서 확인 가능합니다.
|
||||
|
||||

|
||||
|
||||
또한 자체적으로 경량 언어모델을 탑재하여 모호성이 있는 경우에도 제법 정확하게 형태소를 분석해냅니다. CoNg 모델에서부터는 모호성 해소 성능이 더욱 크게 향상되었습니다. (모호성 해소 성능 평가는 [이 페이지](https://github.com/bab2min/kiwipiepy/tree/main/benchmark/disambiguate)에서 수행가능합니다. )
|
||||
|
||||

|
||||
|
||||
문장 분리 기능을 비롯한 다양한 편의기능을 제공합니다. (문장 분리 성능 평가는 [이 페이지](https://github.com/bab2min/kiwipiepy/tree/main/benchmark/sentence_split)에서 수행가능합니다. )
|
||||
|
||||
라이브러리 차원에서 멀티스레딩을 지원하기 때문에 대량의 텍스트를 분석해야할 경우 멀티코어를 활용하여 빠른 분석이 가능합니다.
|
||||
|
||||
## 웹 데모 페이지
|
||||
최신 버전의 Kiwi를 사용해볼 수 있는 [웹 데모 페이지](https://kiwi.bab2min.pe.kr/)를 제공하고 있습니다.
|
||||
간단하게 테스트를 해보실 경우 웹 데모 페이지를 사용하시고 대량의 텍스트 처리가 필요한 경우 아래 설명된 방법으로 Kiwi를 설치하셔서 로컬에서 구동하시는 걸 권장해드립니다.
|
||||
|
||||
## 설치
|
||||
|
||||
### C++
|
||||
|
||||
#### 컴파일된 바이너리 다운로드
|
||||
https://github.com/bab2min/Kiwi/releases 에서 Windows, Linux, macOS, Android 버전으로 컴파일된 Library 파일과 모델 파일을 다운로드 받을 수 있습니다.
|
||||
|
||||
#### Windows
|
||||
Visual Studio 2019 이상을 사용하여 `Kiwi.sln` 파일을 실행하여 컴파일할 수 있습니다.
|
||||
|
||||
#### Linux
|
||||
이 레포지토리를 clone한 뒤 cmake>=3.12를 사용하여 컴파일합니다.
|
||||
모델 파일은 용량이 큰 관계로 [Git LFS](https://git-lfs.github.com/)를 통해 공유됩니다. 따라서 `git clone`에 앞서 Git LFS가 설치되어있는지 확인해주세요.
|
||||
|
||||
##### gcc >= 7 이상 혹은 기타 c++17 호환 컴파일러 사용가능 환경
|
||||
```console
|
||||
$ git clone https://github.com/bab2min/Kiwi
|
||||
$ cd Kiwi
|
||||
$ git lfs pull
|
||||
$ git submodule sync
|
||||
$ git submodule update --init --recursive
|
||||
$ mkdir build && cd build
|
||||
$ cmake -DCMAKE_BUILD_TYPE=Release ../
|
||||
$ make
|
||||
$ make install
|
||||
$ ldconfig
|
||||
```
|
||||
|
||||
설치가 잘 됐는지 확인하기 위해서는 `kiwi-evaluator`를 실행해봅니다.
|
||||
```console
|
||||
$ ./kiwi-evaluator --model ../models/base ../eval_data/* --largest
|
||||
Loading Time : 981.745 ms
|
||||
ArchType : avx2
|
||||
LM Size : 34.1853 MB
|
||||
Mem Usage : 278.129 MB
|
||||
|
||||
Test file: eval_data/web.txt
|
||||
0.862114, 0.852863
|
||||
Total (158 lines) Time : 301.702 ms
|
||||
Time per Line : 1.9095 ms
|
||||
================
|
||||
Test file: eval_data/written.txt
|
||||
0.942892, 0.943506
|
||||
Total (33 lines) Time : 62.3999 ms
|
||||
Time per Line : 1.89091 ms
|
||||
================
|
||||
Test file: eval_data/web_with_typos.txt
|
||||
0.754417, 0.720886
|
||||
Total (97 lines) Time : 99.7661 ms
|
||||
Time per Line : 1.02852 ms
|
||||
================
|
||||
|
||||
================
|
||||
Avg Score
|
||||
0.853141, 0.839085
|
||||
================
|
||||
```
|
||||
|
||||
0.13.0 버전부터 추가된 오타 교정 기능이 잘 작동하는지 확인하기 위해서는 다음과 같이 실행합니다.
|
||||
```console
|
||||
$ ./kiwi-evaluator --model ../models/base ../eval_data/* --largest --typo 6
|
||||
Loading Time : 9414.45 ms
|
||||
ArchType : avx2
|
||||
LM Size : 34.1853 MB
|
||||
Mem Usage : 693.945 MB
|
||||
|
||||
Test file: eval_data/web.txt
|
||||
0.86321, 0.85566
|
||||
Total (158 lines) Time : 432.236 ms
|
||||
Time per Line : 2.73567 ms
|
||||
================
|
||||
Test file: eval_data/written.txt
|
||||
0.941712, 0.942217
|
||||
Total (33 lines) Time : 95.3079 ms
|
||||
Time per Line : 2.88812 ms
|
||||
================
|
||||
Test file: eval_data/web_with_typos.txt
|
||||
0.869582, 0.865393
|
||||
Total (97 lines) Time : 169.416 ms
|
||||
Time per Line : 1.74656 ms
|
||||
================
|
||||
|
||||
================
|
||||
Avg Score
|
||||
0.891501, 0.887757
|
||||
================
|
||||
```
|
||||
|
||||
### C API
|
||||
include/kiwi/capi.h 를 참조하세요.
|
||||
|
||||
#### 컴파일된 바이너리 다운로드
|
||||
https://github.com/bab2min/Kiwi/releases 에서 Windows, Linux, macOS, Android 버전으로 컴파일된 Library 파일과 모델 파일을 다운로드 받을 수 있습니다.
|
||||
|
||||
### C# Wrapper
|
||||
https://github.com/bab2min/kiwi-gui 에서 공식 GUI 툴에 사용되는 C# Wrapper를 찾으실 수 있습니다.
|
||||
|
||||
또한 EX3님께서 기여해주신 wrapper인 [NetKiwi](https://github.com/EX3exp/NetKiwi)가 있습니다.
|
||||
|
||||
### Python3 Wrapper
|
||||
또한 Python3용 API인 Kiwipiepy가 제공됩니다. 이에 대해서는 https://github.com/bab2min/kiwipiepy 를 참조하시길 바랍니다.
|
||||
|
||||
### Java Wrapper
|
||||
Java 1.8 이상에서 사용 가능한 KiwiJava가 Java binding으로 제공됩니다. 이에 대해서는 [bindings/java](bindings/java)를 참조하시길 바랍니다.
|
||||
|
||||
### Android Library
|
||||
Android NDK를 통해 Android 앱에서 사용할 수 있는 AAR 라이브러리가 제공됩니다. GitHub Releases에서 `kiwi-android-VERSION.aar` 파일을 다운로드하여 Android 프로젝트에 추가하면 됩니다.
|
||||
- **최소 요구사항**: Android API Level 21+, ARM64 아키텍처
|
||||
- **사용법**: [bindings/java](bindings/java)의 README 참조
|
||||
- **패키지**: AAR 형태로 제공되어 Gradle 프로젝트에 쉽게 통합 가능
|
||||
|
||||
### Swift Wrapper
|
||||
iOS 12.0 이상 및 macOS 10.14 이상에서 사용 가능한 Swift binding이 제공 예정입니다. 조금만 기다려주세요.
|
||||
- **최소 요구사항**: iOS 12.0+ / macOS 10.14+, Swift 5.7+
|
||||
- **사용법**: [bindings/swift](bindings/swift)의 README 참조
|
||||
- **설치**: Swift Package Manager 지원
|
||||
|
||||
### R Wrapper
|
||||
[mrchypark](https://github.com/mrchypark)님께서 기여해주신 R언어용 wrapper인 [elbird](https://mrchypark.github.io/elbird/)가 있습니다.
|
||||
|
||||
### GO Wrapper
|
||||
[codingpot](https://discord.gg/rnNJBag42N) 커뮤니티가 작업해주신 go언어용 wrapper인 [kiwigo](https://github.com/codingpot/kiwigo)가 있습니다.
|
||||
|
||||
### Web Assembly (Javascript/Typescript)
|
||||
[RicBent](https://github.com/RicBent)님께서 기여해주신 Web Assembly binding이 있습니다. 이에 대해서는 [bindings/wasm](bindings/wasm)를 참조하시길 바랍니다.
|
||||
|
||||
### Rust Wrapper
|
||||
[JAICHANGPARK](https://github.com/JAICHANGPARK)님께서 개발하신 Rust용 wrapper인 [kiwi-rs](https://github.com/JAICHANGPARK/kiwi-rs)가 있습니다.
|
||||
|
||||
### Flutter Wrapper
|
||||
[JAICHANGPARK](https://github.com/JAICHANGPARK)님께서 개발하신 Rust용 wrapper인 [flutter_kiwi_nlp](https://github.com/JAICHANGPARK/flutter_kiwi_nlp)가 있습니다.
|
||||
|
||||
### 응용 프로그램
|
||||
Kiwi는 C# 기반의 GUI 형태로도 제공됩니다.
|
||||
형태소 분석기는 사용해야하지만 별도의 프로그래밍 지식이 없는 경우 이 프로그램을 사용하시면 됩니다.
|
||||
다음 프로그램은 Windows에서만 구동 가능합니다.
|
||||
https://github.com/bab2min/kiwi-gui 에서 다운받을 수 있습니다.
|
||||
|
||||
## 업데이트 내역
|
||||
업데이트 내역은 [릴리즈 노트](//github.com/bab2min/Kiwi/releases)를 참고해주세요.
|
||||
|
||||
## 품사 태그
|
||||
|
||||
세종 품사 태그를 기초로 하되, 일부 품사 태그를 추가/수정하여 사용하고 있습니다.
|
||||
|
||||
<table class='sp'>
|
||||
<tr><th>대분류</th><th>태그</th><th>설명</th></tr>
|
||||
<tr><th rowspan='5'>체언(N)</th><td>NNG</td><td>일반 명사</td></tr>
|
||||
<tr><td>NNP</td><td>고유 명사</td></tr>
|
||||
<tr><td>NNB</td><td>의존 명사</td></tr>
|
||||
<tr><td>NR</td><td>수사</td></tr>
|
||||
<tr><td>NP</td><td>대명사</td></tr>
|
||||
<tr><th rowspan='5'>용언(V)</th><td>VV</td><td>동사</td></tr>
|
||||
<tr><td>VA</td><td>형용사</td></tr>
|
||||
<tr><td>VX</td><td>보조 용언</td></tr>
|
||||
<tr><td>VCP</td><td>긍정 지정사(이다)</td></tr>
|
||||
<tr><td>VCN</td><td>부정 지정사(아니다)</td></tr>
|
||||
<tr><th rowspan='1'>관형사</th><td>MM</td><td>관형사</td></tr>
|
||||
<tr><th rowspan='2'>부사(MA)</th><td>MAG</td><td>일반 부사</td></tr>
|
||||
<tr><td>MAJ</td><td>접속 부사</td></tr>
|
||||
<tr><th rowspan='1'>감탄사</th><td>IC</td><td>감탄사</td></tr>
|
||||
<tr><th rowspan='9'>조사(J)</th><td>JKS</td><td>주격 조사</td></tr>
|
||||
<tr><td>JKC</td><td>보격 조사</td></tr>
|
||||
<tr><td>JKG</td><td>관형격 조사</td></tr>
|
||||
<tr><td>JKO</td><td>목적격 조사</td></tr>
|
||||
<tr><td>JKB</td><td>부사격 조사</td></tr>
|
||||
<tr><td>JKV</td><td>호격 조사</td></tr>
|
||||
<tr><td>JKQ</td><td>인용격 조사</td></tr>
|
||||
<tr><td>JX</td><td>보조사</td></tr>
|
||||
<tr><td>JC</td><td>접속 조사</td></tr>
|
||||
<tr><th rowspan='5'>어미(E)</th><td>EP</td><td>선어말 어미</td></tr>
|
||||
<tr><td>EF</td><td>종결 어미</td></tr>
|
||||
<tr><td>EC</td><td>연결 어미</td></tr>
|
||||
<tr><td>ETN</td><td>명사형 전성 어미</td></tr>
|
||||
<tr><td>ETM</td><td>관형형 전성 어미</td></tr>
|
||||
<tr><th rowspan='1'>접두사</th><td>XPN</td><td>체언 접두사</td></tr>
|
||||
<tr><th rowspan='4'>접미사(XS)</th><td>XSN</td><td>명사 파생 접미사</td></tr>
|
||||
<tr><td>XSV</td><td>동사 파생 접미사</td></tr>
|
||||
<tr><td>XSA</td><td>형용사 파생 접미사</td></tr>
|
||||
<tr><td>XSM</td><td>부사 파생 접미사<sup>*</sup></td></tr>
|
||||
<tr><th rowspan='1'>어근</th><td>XR</td><td>어근</td></tr>
|
||||
<tr><th rowspan='12'>부호, 외국어, 특수문자(S)</th><td>SF</td><td>종결 부호(. ! ?)</td></tr>
|
||||
<tr><td>SP</td><td>구분 부호(, / : ;)</td></tr>
|
||||
<tr><td>SS</td><td>인용 부호 및 괄호(' " ( ) [ ] < > { } ― ‘ ’ “ ” ≪ ≫ 등)</td></tr>
|
||||
<tr><td>SSO</td><td>SS 중 여는 부호<sup>*</sup></td></tr>
|
||||
<tr><td>SSC</td><td>SS 중 닫는 부호<sup>*</sup></td></tr>
|
||||
<tr><td>SE</td><td>줄임표(…)</td></tr>
|
||||
<tr><td>SO</td><td>붙임표(- ~)</td></tr>
|
||||
<tr><td>SW</td><td>기타 특수 문자</td></tr>
|
||||
<tr><td>SL</td><td>알파벳(A-Z a-z)</td></tr>
|
||||
<tr><td>SH</td><td>한자</td></tr>
|
||||
<tr><td>SN</td><td>숫자(0-9)</td></tr>
|
||||
<tr><td>SB</td><td>순서 있는 글머리(가. 나. 1. 2. 가) 나) 등)<sup>*</sup></td></tr>
|
||||
<tr><th rowspan='1'>분석 불능</th><td>UN</td><td>분석 불능<sup>*</sup></td></tr>
|
||||
<tr><th rowspan='6'>웹(W)</th><td>W_URL</td><td>URL 주소<sup>*</sup></td></tr>
|
||||
<tr><td>W_EMAIL</td><td>이메일 주소<sup>*</sup></td></tr>
|
||||
<tr><td>W_HASHTAG</td><td>해시태그(#abcd)<sup>*</sup></td></tr>
|
||||
<tr><td>W_MENTION</td><td>멘션(@abcd)<sup>*</sup></td></tr>
|
||||
<tr><td>W_SERIAL</td><td>일련번호(전화번호, 통장번호, IP주소 등)<sup>*</sup></td></tr>
|
||||
<tr><td>W_EMOJI</td><td>이모지<sup>*</sup></td></tr>
|
||||
<tr><th rowspan='3'>기타</th><td>Z_CODA</td><td>덧붙은 받침<sup>*</sup></td></tr>
|
||||
<tr><td>Z_SIOT</td><td>사이시옷<sup>*</sup></td></tr>
|
||||
<tr><td>USER0~4</td><td>사용자 정의 태그<sup>*</sup></td></tr>
|
||||
</table>
|
||||
|
||||
<sup>*</sup> 세종 품사 태그와 다른 독자적인 태그입니다.
|
||||
|
||||
0.12.0 버전부터 `VV`, `VA`, `VX`, `XSA` 태그에 불규칙 활용여부를 명시하는 접미사 `-R`와 `-I`이 덧붙을 수 있습니다.
|
||||
`-R`은 규칙 활용, `-I`은 불규칙 활용을 나타냅니다.
|
||||
|
||||
## 성능
|
||||
|
||||
**결과 예시**
|
||||
```text
|
||||
프랑스의 세계적인 의상 디자이너 엠마누엘 웅가로가 실내 장식용 직물 디자이너로 나섰다.
|
||||
(정답) 프랑스/NNP 의/JKG 세계/NNG 적/XSN 이/VCP ㄴ/ETM 의상/NNG 디자이너/NNG 엠마누엘/NNP 웅가로/NNP 가/JKS 실내/NNG 장식/NNG 용/XSN 직물/NNG 디자이너/NNG 로/JKB 나서/VV 었/EP 다/EF ./SF
|
||||
(Kiwi) 프랑스/NNP 의/JKG 세계/NNG 적/XSN 이/VCP ᆫ/ETM 의상/NNG 디자이너/NNG 엠마누/NNP 에/JKB ᆯ/JKO 웅가로/NNP 가/JKS 실내/NNG 장식/NNG 용/XSN 직물/NNG 디자이너/NNG 로/JKB 나서/VV 었/EP 다/EF ./SF
|
||||
|
||||
둥글둥글한 돌은 아무리 굴러도 흔적이 남지 않습니다.
|
||||
(정답) 둥글둥글/MAG 하/XSA ㄴ/ETM 돌/NNG 은/JX 아무리/MAG 구르/VV 어도/EC 흔적/NNG 이/JKS 남/VV 지/EC 않/VX 습니다/EF ./SF
|
||||
(Kiwi) 둥글둥글/MAG 하/XSA ᆫ/ETM 돌/NNG 은/JX 아무리/MAG 구르/VV 어도/EC 흔적/NNG 이/JKS 남/VV 지/EC 않/VX 습니다/EF ./SF
|
||||
|
||||
하늘을 훨훨 나는 새처럼
|
||||
(정답) 하늘/NNG 을/JKO 훨훨/MAG 날/VV 는/ETM 새/NNG 처럼/JKB
|
||||
(Kiwi) 하늘/NNG 을/JKO 훨훨/MAG 날/VV 는/ETM 새/NNG 처럼/JKB
|
||||
|
||||
아버지가방에들어가신다
|
||||
(정답) 아버지/NNG 가/JKS 방/NNG 에/JKB 들어가/VV 시/EP ㄴ다/EF
|
||||
(Kiwi) 아버지/NNG 가/JKS 방/NNG 에/JKB 들어가/VV 시/EP ᆫ다/EC
|
||||
```
|
||||
## 데모
|
||||
|
||||
https://lab.bab2min.pe.kr/kiwi 에서 데모를 실행해 볼 수 있습니다.
|
||||
|
||||
|
||||
## 라이센스
|
||||
Kiwi는 LGPL v3 라이센스로 배포됩니다.
|
||||
|
||||
이메일: bab2min@gmail.com
|
||||
|
||||
블로그: http://bab2min.tistory.com/560
|
||||
|
||||
## 기여하기
|
||||
자세한 내용은 [CONTRIBUTING.md](CONTRIBUTING.md) 에서 확인해주세요.
|
||||
|
||||
## 인용하기
|
||||
DOI 혹은 아래의 BibTex를 이용해 인용해주세요.
|
||||
[](https://doi.org/10.23287/KJDH.2024.1.1.6)
|
||||
```text
|
||||
@article{43508,
|
||||
title = {Kiwi: 통계적 언어 모델과 Skip-Bigram을 이용한 한국어 형태소 분석기 구현},
|
||||
journal = {디지털인문학},
|
||||
volume = {1},
|
||||
number = {1},
|
||||
page = {109-136},
|
||||
year = {2024},
|
||||
issn = {3058-311X},
|
||||
doi = {https://doi.org/10.23287/KJDH.2024.1.1.6},
|
||||
url = {https://kjdh/v.1/1/109/43508},
|
||||
author = {민철 이},
|
||||
keywords = {한국어, 자연어처리, 형태소 분석기, 모호성 해소, 언어 모델},
|
||||
abstract = {한국어 형태소 분석 시 모델이 마주하는 어려움 중 하나는 모호성이다. 이는 한국어에서 기저형이 전혀 다른 형태소 조합이 동일한 표면형을 가질 수 있기 때문에 발생하며 이를 바르게 분석하기 위해서는 문맥을 고려하는 능력이 모델에게 필수적이다. 형태소 분석기 Kiwi는 이를 해결하기 위해 근거리 맥락을 고려하는 통계적 언어 모델과 원거리 맥락을 고려하는 Skip-Bigram 모델을 조합하는 방식을 제안한다. 제안된 방식은 모호성 해소에서 평균 정확도 86.7%를 달성하여 평균 50~70%에 머무르는 기존의 오픈소스 형태소 분석기, 특히 딥러닝 기반의 분석기들보다도 앞서는 결과를 보였다. 또한 최적화된 경량 모델을 사용한 덕분에 타 분석기보다 빠른 속도를 보여 대량의 텍스트를 분석하는 데에도 유용하게 쓰일 수 있다. 오픈소스로 공개된 Kiwi는 전술한 특징들 덕분에 텍스트 마이닝, 자연어처리, 인문학 등 다양한 분야에서 널리 사용되고 있다. 본 연구는 형태소 분석의 정확도와 효율성을 모두 개선했으나, 미등록어 처리와 한국어 방언 분석 등의 과제에서 한계를 보여 이에 대한 추가 보완이 필요하다.},
|
||||
}
|
||||
```
|
||||
```text
|
||||
@article{43508,
|
||||
title = {Kiwi: Developing a Korean Morphological Analyzer Based on Statistical Language Models and Skip-Bigram},
|
||||
journal = {Korean Journal of Digital Humanities},
|
||||
volume = {1},
|
||||
number = {1},
|
||||
page = {109-136},
|
||||
year = {2024},
|
||||
issn = {3058-311X},
|
||||
doi = {https://doi.org/10.23287/KJDH.2024.1.1.6},
|
||||
url = {https://kjdh/v.1/1/109/43508},
|
||||
author = {Min-chul Lee},
|
||||
keywords = {한국어, 자연어처리, 형태소 분석기, 모호성 해소, 언어 모델},
|
||||
abstract = {One of the challenges faced by models in Korean morphological analysis is ambiguity. This arises because different combinations of morphemes with completely different base forms can share the same surface form in Korean, necessitating the model's ability to consider context for accurate analysis. The morphological analyzer Kiwi addresses this issue by proposing a combination of a statistical language model that considers local context and a Skip-Bigram model that considers global context. This proposed method achieved an average accuracy of 86.7% in resolving ambiguities, outperforming existing open-source morphological analyzers, particularly deep learning-based ones, which typically achieve between 50-70%. Additionally, thanks to the optimized lightweight model, Kiwi shows faster speeds compared to other analyzers, making it useful for analyzing large volumes of text. Kiwi, released as open source, is widely used in various fields such as text mining, natural language processing, and the humanities due to these features. Although this study improved both the accuracy and efficiency of morphological analysis, it shows limitations in handling out-of-vocabulary problem and analyzing Korean dialects, necessitating further improvements in these areas.},
|
||||
}
|
||||
```
|
||||
|
||||
144
SwTokenizer_8h.html
Normal file
144
SwTokenizer_8h.html
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>Kiwi: include/kiwi/SwTokenizer.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">Kiwi
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_602883e5d098af516ca12f13d12399cf.html">kiwi</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#enum-members">Enumerations</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle"><div class="title">SwTokenizer.h File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>형태소 기반의 Subword Tokenizer의 인터페이스를 담고 있는 헤더 파일
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <future></code><br />
|
||||
<code>#include "<a class="el" href="Types_8h.html">Types.h</a>"</code><br />
|
||||
<code>#include "FrozenTrie.h"</code><br />
|
||||
<code>#include "Utils.h"</code><br />
|
||||
<code>#include "Trie.hpp"</code><br />
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
Include dependency graph for SwTokenizer.h:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><img src="SwTokenizer_8h__incl.png" border="0" usemap="#ainclude_2kiwi_2SwTokenizer_8h" alt=""/></div>
|
||||
</div>
|
||||
</div><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1SwToken.html">kiwi::SwToken</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1SwTokenizerConfig.html">kiwi::SwTokenizerConfig</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1UnigramSwTrainerConfig.html">kiwi::UnigramSwTrainerConfig</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1SwTokenizerBuilder.html">kiwi::SwTokenizerBuilder</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1SwTokenizer.html">kiwi::SwTokenizer</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1UnigramSwTrainer.html">kiwi::UnigramSwTrainer</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
|
||||
Enumerations</h2></td></tr>
|
||||
<tr class="memitem:ab81a1e4961ed783a4e92983ba7750096" id="r_ab81a1e4961ed783a4e92983ba7750096"><td class="memItemLeft" align="right" valign="top"><a id="ab81a1e4961ed783a4e92983ba7750096" name="ab81a1e4961ed783a4e92983ba7750096"></a>enum class  </td><td class="memItemRight" valign="bottom"><b>SwTokenFlag</b> : uint8_t { <br />
|
||||
  <b>none</b> = 0
|
||||
, <b>special</b> = 1
|
||||
, <b>glue</b> = 2
|
||||
, <b>subword</b> = 3
|
||||
, <br />
|
||||
  <b>byte</b> = 4
|
||||
, <b>punct</b>
|
||||
, <b>chinese</b>
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:ab81a1e4961ed783a4e92983ba7750096"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:a84938f6b3acfb16686e3d83571b37171" id="r_a84938f6b3acfb16686e3d83571b37171"><td class="memItemLeft" align="right" valign="top"><a id="a84938f6b3acfb16686e3d83571b37171" name="a84938f6b3acfb16686e3d83571b37171"></a>
|
||||
const char * </td><td class="memItemRight" valign="bottom"><b>kiwi::tagToReprStr</b> (<a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> tag)</td></tr>
|
||||
<tr class="separator:a84938f6b3acfb16686e3d83571b37171"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>형태소 기반의 Subword Tokenizer의 인터페이스를 담고 있는 헤더 파일 </p>
|
||||
<dl class="section author"><dt>Author</dt><dd>bab2min (<a href="#" onclick="location.href='mai'+'lto:'+'bab'+'2m'+'in@'+'gm'+'ail'+'.c'+'om'; return false;">bab2m<span class="obfuscator">.nosp@m.</span>in@g<span class="obfuscator">.nosp@m.</span>mail.<span class="obfuscator">.nosp@m.</span>com</a>) </dd></dl>
|
||||
<dl class="section version"><dt>Version</dt><dd>0.23.1 </dd></dl>
|
||||
<dl class="section date"><dt>Date</dt><dd>2026-04-05 </dd></dl>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
36
SwTokenizer_8h__incl.dot
Normal file
36
SwTokenizer_8h__incl.dot
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
digraph "include/kiwi/SwTokenizer.h"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="include/kiwi/SwTokenizer.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="형태소 기반의 Subword Tokenizer의 인터페이스를 담고 있는 헤더 파일"];
|
||||
Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="future",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node3 [id="Node000003",label="Types.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Types_8h.html",tooltip="Kiwi C++ API에 쓰이는 주요 타입들을 모아놓은 헤더 파일"];
|
||||
Node3 -> Node4 [id="edge3_Node000003_Node000004",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node4 [id="Node000004",label="vector",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node5 [id="edge4_Node000003_Node000005",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node5 [id="Node000005",label="deque",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node6 [id="edge5_Node000003_Node000006",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node6 [id="Node000006",label="map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node7 [id="edge6_Node000003_Node000007",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node7 [id="Node000007",label="unordered_map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node8 [id="edge7_Node000003_Node000008",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node8 [id="Node000008",label="unordered_set",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node9 [id="edge8_Node000003_Node000009",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node9 [id="Node000009",label="string",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node10 [id="edge9_Node000003_Node000010",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node10 [id="Node000010",label="string_view",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node11 [id="edge10_Node000003_Node000011",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node11 [id="Node000011",label="memory",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node12 [id="edge11_Node000003_Node000012",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node12 [id="Node000012",label="type_traits",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node13 [id="edge12_Node000003_Node000013",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node13 [id="Node000013",label="functional",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node14 [id="edge13_Node000003_Node000014",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node14 [id="Node000014",label="stdexcept",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node3 -> Node15 [id="edge14_Node000003_Node000015",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node15 [id="Node000015",label="iostream",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
}
|
||||
712
Types_8h.html
Normal file
712
Types_8h.html
Normal file
|
|
@ -0,0 +1,712 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>Kiwi: include/kiwi/Types.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">Kiwi
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_602883e5d098af516ca12f13d12399cf.html">kiwi</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#define-members">Macros</a> |
|
||||
<a href="#typedef-members">Typedefs</a> |
|
||||
<a href="#enum-members">Enumerations</a> |
|
||||
<a href="#func-members">Functions</a> |
|
||||
<a href="#var-members">Variables</a> </div>
|
||||
<div class="headertitle"><div class="title">Types.h File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>Kiwi C++ API에 쓰이는 주요 타입들을 모아놓은 헤더 파일
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <vector></code><br />
|
||||
<code>#include <deque></code><br />
|
||||
<code>#include <map></code><br />
|
||||
<code>#include <unordered_map></code><br />
|
||||
<code>#include <unordered_set></code><br />
|
||||
<code>#include <string></code><br />
|
||||
<code>#include <string_view></code><br />
|
||||
<code>#include <memory></code><br />
|
||||
<code>#include <type_traits></code><br />
|
||||
<code>#include <functional></code><br />
|
||||
<code>#include <stdexcept></code><br />
|
||||
<code>#include <iostream></code><br />
|
||||
<code>#include "TemplateUtils.hpp"</code><br />
|
||||
<code>#include "ScriptType.h"</code><br />
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
Include dependency graph for Types.h:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><img src="Types_8h__incl.png" border="0" usemap="#ainclude_2kiwi_2Types_8h" alt=""/></div>
|
||||
</div>
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
This graph shows which files directly or indirectly include this file:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><img src="Types_8h__dep__incl.png" border="0" usemap="#ainclude_2kiwi_2Types_8hdep" alt=""/></div>
|
||||
</div>
|
||||
</div><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1Exception.html">kiwi::Exception</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1IOException.html">kiwi::IOException</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1SerializationException.html">kiwi::SerializationException</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1FormatException.html">kiwi::FormatException</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1UnicodeException.html">kiwi::UnicodeException</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1UnknownMorphemeException.html">kiwi::UnknownMorphemeException</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1SwTokenizerException.html">kiwi::SwTokenizerException</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1Hash.html">kiwi::Hash< Ty ></a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1TokenInfo.html">kiwi::TokenInfo</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">분석 완료된 각 형태소들의 정보를 담는 구조체 <a href="structkiwi_1_1TokenInfo.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1BasicToken.html">kiwi::BasicToken</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1PretokenizedSpan.html">kiwi::PretokenizedSpan</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1Hash_3_01POSTag_01_4.html">kiwi::Hash< POSTag ></a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1Hash_3_01CondVowel_01_4.html">kiwi::Hash< CondVowel ></a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1Hash_3_01CondPolarity_01_4.html">kiwi::Hash< CondPolarity ></a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1Hash_3_01Dialect_01_4.html">kiwi::Hash< Dialect ></a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
|
||||
Macros</h2></td></tr>
|
||||
<tr class="memitem:af636714d0b4d77202d5bb6532ea0627b" id="r_af636714d0b4d77202d5bb6532ea0627b"><td class="memItemLeft" align="right" valign="top"><a id="af636714d0b4d77202d5bb6532ea0627b" name="af636714d0b4d77202d5bb6532ea0627b"></a>
|
||||
#define </td><td class="memItemRight" valign="bottom"><b>KIWI_DEFINE_ENUM_FLAG_OPERATORS</b>(Type)</td></tr>
|
||||
<tr class="separator:af636714d0b4d77202d5bb6532ea0627b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
|
||||
Typedefs</h2></td></tr>
|
||||
<tr class="memitem:a1ec8eec78c8df123411e97bdcdd0705a" id="r_a1ec8eec78c8df123411e97bdcdd0705a"><td class="memItemLeft" align="right" valign="top"><a id="a1ec8eec78c8df123411e97bdcdd0705a" name="a1ec8eec78c8df123411e97bdcdd0705a"></a>
|
||||
typedef char16_t </td><td class="memItemRight" valign="bottom"><b>kiwi::kchar_t</b></td></tr>
|
||||
<tr class="separator:a1ec8eec78c8df123411e97bdcdd0705a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a48d29484f2a48f6a4de60bbfd7746232" id="r_a48d29484f2a48f6a4de60bbfd7746232"><td class="memTemplParams" colspan="2">template<typename _Ty > </td></tr>
|
||||
<tr class="memitem:a48d29484f2a48f6a4de60bbfd7746232"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="Types_8h.html#a48d29484f2a48f6a4de60bbfd7746232">kiwi::Vector</a> = std::vector< _Ty ></td></tr>
|
||||
<tr class="memdesc:a48d29484f2a48f6a4de60bbfd7746232"><td class="mdescLeft"> </td><td class="mdescRight">std::vector의 내부용 타입. mimalloc 옵션에 따라 mi_stl_allocator로부터 메모리를 할당받는다. <br /></td></tr>
|
||||
<tr class="separator:a48d29484f2a48f6a4de60bbfd7746232"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab6706a3f964329170362638ffbdf4f14" id="r_ab6706a3f964329170362638ffbdf4f14"><td class="memTemplParams" colspan="2"><a id="ab6706a3f964329170362638ffbdf4f14" name="ab6706a3f964329170362638ffbdf4f14"></a>
|
||||
template<typename _Ty > </td></tr>
|
||||
<tr class="memitem:ab6706a3f964329170362638ffbdf4f14"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>kiwi::Deque</b> = std::deque< _Ty ></td></tr>
|
||||
<tr class="separator:ab6706a3f964329170362638ffbdf4f14"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a218a4ac48790bae822e29da62d896cbe" id="r_a218a4ac48790bae822e29da62d896cbe"><td class="memTemplParams" colspan="2"><a id="a218a4ac48790bae822e29da62d896cbe" name="a218a4ac48790bae822e29da62d896cbe"></a>
|
||||
template<typename _K , typename _V > </td></tr>
|
||||
<tr class="memitem:a218a4ac48790bae822e29da62d896cbe"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>kiwi::Map</b> = std::map< _K, _V ></td></tr>
|
||||
<tr class="separator:a218a4ac48790bae822e29da62d896cbe"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a22049affb93ad297719245d28ffc10ff" id="r_a22049affb93ad297719245d28ffc10ff"><td class="memTemplParams" colspan="2">template<typename _K , typename _V , typename _Hash = Hash<_K>> </td></tr>
|
||||
<tr class="memitem:a22049affb93ad297719245d28ffc10ff"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="Types_8h.html#a22049affb93ad297719245d28ffc10ff">kiwi::UnorderedMap</a> = std::unordered_map< _K, _V, _Hash ></td></tr>
|
||||
<tr class="memdesc:a22049affb93ad297719245d28ffc10ff"><td class="mdescLeft"> </td><td class="mdescRight">std::unordered_map의 내부용 타입. mimalloc 옵션에 따라 mi_stl_allocator로부터 메모리를 할당받는다. <br /></td></tr>
|
||||
<tr class="separator:a22049affb93ad297719245d28ffc10ff"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a3e52e6cf48366e0dba5b83ceaa951992" id="r_a3e52e6cf48366e0dba5b83ceaa951992"><td class="memTemplParams" colspan="2"><a id="a3e52e6cf48366e0dba5b83ceaa951992" name="a3e52e6cf48366e0dba5b83ceaa951992"></a>
|
||||
template<typename _K , typename _Hash = Hash<_K>> </td></tr>
|
||||
<tr class="memitem:a3e52e6cf48366e0dba5b83ceaa951992"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><b>kiwi::UnorderedSet</b> = std::unordered_set< _K, _Hash ></td></tr>
|
||||
<tr class="separator:a3e52e6cf48366e0dba5b83ceaa951992"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1f2cff3b6a7a1d78c447635f1d84ebe1" id="r_a1f2cff3b6a7a1d78c447635f1d84ebe1"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="Types_8h.html#a1f2cff3b6a7a1d78c447635f1d84ebe1">kiwi::KString</a> = std::basic_string< kchar_t ></td></tr>
|
||||
<tr class="memdesc:a1f2cff3b6a7a1d78c447635f1d84ebe1"><td class="mdescLeft"> </td><td class="mdescRight">std::u16string의 내부용 타입. mimalloc 옵션에 따라 mi_stl_allocator로부터 메모리를 할당받는다. <br /></td></tr>
|
||||
<tr class="separator:a1f2cff3b6a7a1d78c447635f1d84ebe1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1f9e4a8f8d2400d8486856860b97152b" id="r_a1f9e4a8f8d2400d8486856860b97152b"><td class="memItemLeft" align="right" valign="top"><a id="a1f9e4a8f8d2400d8486856860b97152b" name="a1f9e4a8f8d2400d8486856860b97152b"></a>
|
||||
using </td><td class="memItemRight" valign="bottom"><b>kiwi::KStringStream</b> = std::basic_stringstream< kchar_t ></td></tr>
|
||||
<tr class="separator:a1f9e4a8f8d2400d8486856860b97152b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8c52e53c9818de51d4ef7282f0ef1154" id="r_a8c52e53c9818de51d4ef7282f0ef1154"><td class="memItemLeft" align="right" valign="top"><a id="a8c52e53c9818de51d4ef7282f0ef1154" name="a8c52e53c9818de51d4ef7282f0ef1154"></a>
|
||||
using </td><td class="memItemRight" valign="bottom"><b>kiwi::KcVector</b> = <a class="el" href="Types_8h.html#a48d29484f2a48f6a4de60bbfd7746232">Vector</a>< kchar_t ></td></tr>
|
||||
<tr class="separator:a8c52e53c9818de51d4ef7282f0ef1154"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac3e4f78d399b476f38f39f4003ad3e25" id="r_ac3e4f78d399b476f38f39f4003ad3e25"><td class="memItemLeft" align="right" valign="top"><a id="ac3e4f78d399b476f38f39f4003ad3e25" name="ac3e4f78d399b476f38f39f4003ad3e25"></a>
|
||||
using </td><td class="memItemRight" valign="bottom"><b>kiwi::KcScores</b> = <a class="el" href="Types_8h.html#a48d29484f2a48f6a4de60bbfd7746232">Vector</a>< std::pair< KcVector, float > ></td></tr>
|
||||
<tr class="separator:ac3e4f78d399b476f38f39f4003ad3e25"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7b95ff870be574d38671993871f2a01e" id="r_a7b95ff870be574d38671993871f2a01e"><td class="memItemLeft" align="right" valign="top"><a id="a7b95ff870be574d38671993871f2a01e" name="a7b95ff870be574d38671993871f2a01e"></a>
|
||||
using </td><td class="memItemRight" valign="bottom"><b>kiwi::U16StringView</b> = std::u16string_view</td></tr>
|
||||
<tr class="separator:a7b95ff870be574d38671993871f2a01e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa3333c7237f7db8aa0121560dbaa3ecb" id="r_aa3333c7237f7db8aa0121560dbaa3ecb"><td class="memItemLeft" align="right" valign="top"><a id="aa3333c7237f7db8aa0121560dbaa3ecb" name="aa3333c7237f7db8aa0121560dbaa3ecb"></a>
|
||||
using </td><td class="memItemRight" valign="bottom"><b>kiwi::TokenResult</b> = std::pair< std::vector< <a class="el" href="structkiwi_1_1TokenInfo.html">TokenInfo</a> >, float ></td></tr>
|
||||
<tr class="memdesc:aa3333c7237f7db8aa0121560dbaa3ecb"><td class="mdescLeft"> </td><td class="mdescRight">분석 완료된 형태소의 목록(<code>std::vector<<a class="el" href="structkiwi_1_1TokenInfo.html" title="분석 완료된 각 형태소들의 정보를 담는 구조체">TokenInfo</a>></code>)과 점수(<code>float</code>)의 pair 타입 <br /></td></tr>
|
||||
<tr class="separator:aa3333c7237f7db8aa0121560dbaa3ecb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a56a3a3ffbbb25354ba2ecaf45ffba11d" id="r_a56a3a3ffbbb25354ba2ecaf45ffba11d"><td class="memItemLeft" align="right" valign="top"><a id="a56a3a3ffbbb25354ba2ecaf45ffba11d" name="a56a3a3ffbbb25354ba2ecaf45ffba11d"></a>
|
||||
using </td><td class="memItemRight" valign="bottom"><b>kiwi::U16Reader</b> = std::function< std::u16string()></td></tr>
|
||||
<tr class="separator:a56a3a3ffbbb25354ba2ecaf45ffba11d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a2d2815e37076236b38e25a3d09ce2949" id="r_a2d2815e37076236b38e25a3d09ce2949"><td class="memItemLeft" align="right" valign="top"><a id="a2d2815e37076236b38e25a3d09ce2949" name="a2d2815e37076236b38e25a3d09ce2949"></a>
|
||||
using </td><td class="memItemRight" valign="bottom"><b>kiwi::U16MultipleReader</b> = std::function< U16Reader()></td></tr>
|
||||
<tr class="separator:a2d2815e37076236b38e25a3d09ce2949"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
|
||||
Enumerations</h2></td></tr>
|
||||
<tr class="memitem:ac15313ea8fffc5cc54475e10264ddebb" id="r_ac15313ea8fffc5cc54475e10264ddebb"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">kiwi::POSTag</a> : uint8_t { <br />
|
||||
  <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebbaad921d60486366258809553a3db49a4a">unknown</a>
|
||||
, <b>nng</b>
|
||||
, <b>nnp</b>
|
||||
, <b>nnb</b>
|
||||
, <br />
|
||||
  <b>vv</b>
|
||||
, <b>va</b>
|
||||
, <b>mag</b>
|
||||
, <b>nr</b>
|
||||
, <br />
|
||||
  <b>np</b>
|
||||
, <b>vx</b>
|
||||
, <b>mm</b>
|
||||
, <b>maj</b>
|
||||
, <br />
|
||||
  <b>ic</b>
|
||||
, <b>xpn</b>
|
||||
, <b>xsn</b>
|
||||
, <b>xsv</b>
|
||||
, <br />
|
||||
  <b>xsa</b>
|
||||
, <b>xsm</b>
|
||||
, <b>xr</b>
|
||||
, <b>vcp</b>
|
||||
, <br />
|
||||
  <b>vcn</b>
|
||||
, <b>sf</b>
|
||||
, <b>sp</b>
|
||||
, <b>ss</b>
|
||||
, <br />
|
||||
  <b>sso</b>
|
||||
, <b>ssc</b>
|
||||
, <b>se</b>
|
||||
, <b>so</b>
|
||||
, <br />
|
||||
  <b>sw</b>
|
||||
, <b>sb</b>
|
||||
, <b>sl</b>
|
||||
, <b>sh</b>
|
||||
, <br />
|
||||
  <b>sn</b>
|
||||
, <b>w_url</b>
|
||||
, <b>w_email</b>
|
||||
, <b>w_mention</b>
|
||||
, <br />
|
||||
  <b>w_hashtag</b>
|
||||
, <b>w_serial</b>
|
||||
, <b>w_emoji</b>
|
||||
, <b>jks</b>
|
||||
, <br />
|
||||
  <b>jkc</b>
|
||||
, <b>jkg</b>
|
||||
, <b>jko</b>
|
||||
, <b>jkb</b>
|
||||
, <br />
|
||||
  <b>jkv</b>
|
||||
, <b>jkq</b>
|
||||
, <b>jx</b>
|
||||
, <b>jc</b>
|
||||
, <br />
|
||||
  <b>ep</b>
|
||||
, <b>ef</b>
|
||||
, <b>ec</b>
|
||||
, <b>etn</b>
|
||||
, <br />
|
||||
  <b>etm</b>
|
||||
, <b>z_coda</b>
|
||||
, <b>z_siot</b>
|
||||
, <b>user0</b>
|
||||
, <br />
|
||||
  <b>user1</b>
|
||||
, <b>user2</b>
|
||||
, <b>user3</b>
|
||||
, <b>user4</b>
|
||||
, <br />
|
||||
  <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebba83878c91171338902e0fe0fb97a8c47a">p</a>
|
||||
, <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebba2ffe4e77325d9a7152f7086ea7aa5114">max</a>
|
||||
, <b>pv</b> = p
|
||||
, <b>pa</b> = p + 1
|
||||
, <br />
|
||||
  <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebba39d3202ec495577fd03ee14c24767dd9">irregular</a> = 0x80
|
||||
, <b>unknown_feat_ha</b> = 0xFF
|
||||
, <b>vvi</b> = vv | irregular
|
||||
, <b>vai</b> = va | irregular
|
||||
, <br />
|
||||
  <b>vxi</b> = vx | irregular
|
||||
, <b>xsai</b> = xsa | irregular
|
||||
, <b>pvi</b> = pv | irregular
|
||||
, <b>pai</b> = pa | irregular
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="memdesc:ac15313ea8fffc5cc54475e10264ddebb"><td class="mdescLeft"> </td><td class="mdescRight">형태소 품사 태그와 관련된 열거형 <a href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">More...</a><br /></td></tr>
|
||||
<tr class="separator:ac15313ea8fffc5cc54475e10264ddebb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a11856481b15f24bf19cb647734ea1085" id="r_a11856481b15f24bf19cb647734ea1085"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085">kiwi::CondVowel</a> : uint8_t { <br />
|
||||
  <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085a334c4a4c42fdb79d7ebc3e73b517e6f8">none</a>
|
||||
, <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085a100b8cad7cf2a56f6df78f171f97a1ec">any</a>
|
||||
, <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085afb4ee69c5a35ca74a417d6a047332d6b">vowel</a>
|
||||
, <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085ae0f179bce9cffadffe0d89748fc964b5">vocalic</a>
|
||||
, <br />
|
||||
  <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085af54eb722f1fe5293d0f94d938e011e1f">vocalic_h</a>
|
||||
, <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085a76dde0fd73c7fdd6674bc90b0bd53b35">non_vowel</a>
|
||||
, <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085a2d6fc377a92748a81f519882e20a2a53">non_vocalic</a>
|
||||
, <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085a547d69d64835c70f869a0fe0120f6501">non_vocalic_h</a>
|
||||
, <br />
|
||||
  <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085a1a65fd4015955dc79e66e177130c6797">applosive</a>
|
||||
, <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085a7129b7cbc85892b6cd1e877181759b76">continual</a>
|
||||
, <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085a81fd830c85363675edb98d2879916d8c">boundary</a>
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="memdesc:a11856481b15f24bf19cb647734ea1085"><td class="mdescLeft"> </td><td class="mdescRight">선행 형태소의 종성 여부 조건과 관련된 열거형 <a href="Types_8h.html#a11856481b15f24bf19cb647734ea1085">More...</a><br /></td></tr>
|
||||
<tr class="separator:a11856481b15f24bf19cb647734ea1085"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7903fe33da04a788b0bb009094596894" id="r_a7903fe33da04a788b0bb009094596894"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="Types_8h.html#a7903fe33da04a788b0bb009094596894">kiwi::CondPolarity</a> : uint8_t { <a class="el" href="Types_8h.html#a7903fe33da04a788b0bb009094596894a334c4a4c42fdb79d7ebc3e73b517e6f8">none</a>
|
||||
, <a class="el" href="Types_8h.html#a7903fe33da04a788b0bb009094596894a82082716189f80fd070b89ac716570ba">positive</a>
|
||||
, <a class="el" href="Types_8h.html#a7903fe33da04a788b0bb009094596894a228d6a97a9838dc800e58b3c74ba7b11">negative</a>
|
||||
, <a class="el" href="Types_8h.html#a7903fe33da04a788b0bb009094596894a8f72c327aea57de5c5a3f9f21b56a233">non_adj</a>
|
||||
}</td></tr>
|
||||
<tr class="memdesc:a7903fe33da04a788b0bb009094596894"><td class="mdescLeft"> </td><td class="mdescRight">선행 형태소의 양/음성 조건(모음 조화)과 관련된 열거형 <a href="Types_8h.html#a7903fe33da04a788b0bb009094596894">More...</a><br /></td></tr>
|
||||
<tr class="separator:a7903fe33da04a788b0bb009094596894"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7b5ed1c7b90b79877f32c8a011c06ff3" id="r_a7b5ed1c7b90b79877f32c8a011c06ff3"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="Types_8h.html#a7b5ed1c7b90b79877f32c8a011c06ff3">kiwi::BuildOption</a> { <br />
|
||||
  <b>none</b> = 0
|
||||
, <a class="el" href="Types_8h.html#a7b5ed1c7b90b79877f32c8a011c06ff3a9d4cda55511905f877949ea8055fc681">integrateAllomorph</a> = 1 << 0
|
||||
, <a class="el" href="Types_8h.html#a7b5ed1c7b90b79877f32c8a011c06ff3ac336925b8868bb0c4749738a647abf6b">loadDefaultDict</a> = 1 << 1
|
||||
, <a class="el" href="Types_8h.html#a7b5ed1c7b90b79877f32c8a011c06ff3af29c7cef55d5f13ec9ad2a53a5d10096">loadTypoDict</a> = 1 << 2
|
||||
, <br />
|
||||
  <a class="el" href="Types_8h.html#a7b5ed1c7b90b79877f32c8a011c06ff3a35c1071f1f1a9c497fa503f0ae028068">loadMultiDict</a> = 1 << 3
|
||||
, <b>default_</b> = integrateAllomorph | loadDefaultDict | loadTypoDict | loadMultiDict
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="memdesc:a7b5ed1c7b90b79877f32c8a011c06ff3"><td class="mdescLeft"> </td><td class="mdescRight">KiwiBuilder 생성시 사용되는 비트 플래그 <a href="Types_8h.html#a7b5ed1c7b90b79877f32c8a011c06ff3">More...</a><br /></td></tr>
|
||||
<tr class="separator:a7b5ed1c7b90b79877f32c8a011c06ff3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af7906391a8e367cab5296bac8d4caafa" id="r_af7906391a8e367cab5296bac8d4caafa"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafa">kiwi::ModelType</a> { <br />
|
||||
  <a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafaa334c4a4c42fdb79d7ebc3e73b517e6f8">none</a> = 0
|
||||
, <a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafaaf39ed5b6d0275dcbc4a2f5de624d95ae">largest</a> = 1
|
||||
, <a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafaaac794a38581bb3bc7fb719e2b3331b8e">knlm</a> = 2
|
||||
, <a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafaa037b02f21d877dfa5fc5bf220d47471b">sbg</a> = 3
|
||||
, <br />
|
||||
  <a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafaa3de6a8f9608ddd4ba89f97b36d7587d6">cong</a> = 4
|
||||
, <a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafaae3f0d49077d0c56e887f1ea94cb48c01">congGlobal</a> = 5
|
||||
, <a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafaad60d775d5dc985a13910f27ffc533519">congFp32</a> = 6
|
||||
, <a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafaab0c0607bc37511576e142197ccbab374">congGlobalFp32</a> = 7
|
||||
, <br />
|
||||
  <b>knlmTransposed</b>
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:af7906391a8e367cab5296bac8d4caafa"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa9fc09d985bc896c97e2e0f5cd41c96f" id="r_aa9fc09d985bc896c97e2e0f5cd41c96f"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96f">kiwi::Dialect</a> : uint16_t { <br />
|
||||
  <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96fac00f0c4675b91fb8b918e4079a0b1bac">standard</a> = 0
|
||||
, <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96fa84c0e232e583410d3c16e081f1df9668">gyeonggi</a> = 1 << 0
|
||||
, <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96fa45c4b45068512daa5805d5672bbaeff9">chungcheong</a> = 1 << 1
|
||||
, <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96faf54ccc6de001fe54a7e9f5472b7b1132">gangwon</a> = 1 << 2
|
||||
, <br />
|
||||
  <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96fa7ca8deade90717ea30fd8c03a6e072b2">gyeongsang</a> = 1 << 3
|
||||
, <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96faf38b501b734bd70dd0563c827f5642c1">jeolla</a> = 1 << 4
|
||||
, <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96fa899b662493af42f8254d35c19e10dcb0">jeju</a> = 1 << 5
|
||||
, <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96fa6ddc4246547f25bf759da7b1aac21e2d">hwanghae</a> = 1 << 6
|
||||
, <br />
|
||||
  <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96fa9346ee5f29422c399c053d2899fee5f8">hamgyeong</a> = 1 << 7
|
||||
, <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96fa70ae9293d75de22420b33b203fd70671">pyeongan</a> = 1 << 8
|
||||
, <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96faa8a913fc16b969d03964dfdb314006d7">archaic</a> = 1 << 9
|
||||
, <b>lastPlus1</b>
|
||||
, <br />
|
||||
  <b>all</b> = lastPlus1 * 2 - 3
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:aa9fc09d985bc896c97e2e0f5cd41c96f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:a130b9c5cb25eb262df710dc4d4294bdf" id="r_a130b9c5cb25eb262df710dc4d4294bdf"><td class="memItemLeft" align="right" valign="top"><a id="a130b9c5cb25eb262df710dc4d4294bdf" name="a130b9c5cb25eb262df710dc4d4294bdf"></a>
|
||||
constexpr bool </td><td class="memItemRight" valign="bottom"><b>kiwi::isIrregular</b> (<a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> tag)</td></tr>
|
||||
<tr class="separator:a130b9c5cb25eb262df710dc4d4294bdf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad0bb8332b9ef7f9dc14a7c02e8860773" id="r_ad0bb8332b9ef7f9dc14a7c02e8860773"><td class="memItemLeft" align="right" valign="top"><a id="ad0bb8332b9ef7f9dc14a7c02e8860773" name="ad0bb8332b9ef7f9dc14a7c02e8860773"></a>
|
||||
constexpr <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> </td><td class="memItemRight" valign="bottom"><b>kiwi::setIrregular</b> (<a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> tag)</td></tr>
|
||||
<tr class="separator:ad0bb8332b9ef7f9dc14a7c02e8860773"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a82f482ba4080589c31a1ea3cc7c91741" id="r_a82f482ba4080589c31a1ea3cc7c91741"><td class="memItemLeft" align="right" valign="top"><a id="a82f482ba4080589c31a1ea3cc7c91741" name="a82f482ba4080589c31a1ea3cc7c91741"></a>
|
||||
constexpr <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> </td><td class="memItemRight" valign="bottom"><b>kiwi::clearIrregular</b> (<a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> tag)</td></tr>
|
||||
<tr class="separator:a82f482ba4080589c31a1ea3cc7c91741"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7106328cfa07a2461e8a1a35fa76a39b" id="r_a7106328cfa07a2461e8a1a35fa76a39b"><td class="memItemLeft" align="right" valign="top"><a id="a7106328cfa07a2461e8a1a35fa76a39b" name="a7106328cfa07a2461e8a1a35fa76a39b"></a>
|
||||
constexpr <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> </td><td class="memItemRight" valign="bottom"><b>kiwi::setIrregular</b> (<a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> tag, bool <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebba39d3202ec495577fd03ee14c24767dd9">irregular</a>)</td></tr>
|
||||
<tr class="separator:a7106328cfa07a2461e8a1a35fa76a39b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af3ace402f40dfbf6d592378581f925b5" id="r_af3ace402f40dfbf6d592378581f925b5"><td class="memItemLeft" align="right" valign="top"><a id="af3ace402f40dfbf6d592378581f925b5" name="af3ace402f40dfbf6d592378581f925b5"></a>
|
||||
constexpr bool </td><td class="memItemRight" valign="bottom"><b>kiwi::areTagsEqual</b> (<a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> a, <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">POSTag</a> b, bool ignoreRegularity=false)</td></tr>
|
||||
<tr class="separator:af3ace402f40dfbf6d592378581f925b5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af4b8acd88168d9af1f3682ca96728809" id="r_af4b8acd88168d9af1f3682ca96728809"><td class="memItemLeft" align="right" valign="top"><a id="af4b8acd88168d9af1f3682ca96728809" name="af4b8acd88168d9af1f3682ca96728809"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><b>KIWI_DEFINE_ENUM_FLAG_OPERATORS</b> (<a class="el" href="Types_8h.html#a7b5ed1c7b90b79877f32c8a011c06ff3">kiwi::BuildOption</a>)</td></tr>
|
||||
<tr class="separator:af4b8acd88168d9af1f3682ca96728809"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9bc14d2b862c63b36cf282ed08025f07" id="r_a9bc14d2b862c63b36cf282ed08025f07"><td class="memItemLeft" align="right" valign="top"><a id="a9bc14d2b862c63b36cf282ed08025f07" name="a9bc14d2b862c63b36cf282ed08025f07"></a>
|
||||
 </td><td class="memItemRight" valign="bottom"><b>KIWI_DEFINE_ENUM_FLAG_OPERATORS</b> (<a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96f">kiwi::Dialect</a>)</td></tr>
|
||||
<tr class="separator:a9bc14d2b862c63b36cf282ed08025f07"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
||||
Variables</h2></td></tr>
|
||||
<tr class="memitem:a72f89ee422cc4fdf5b2835a73d248285" id="r_a72f89ee422cc4fdf5b2835a73d248285"><td class="memItemLeft" align="right" valign="top"><a id="a72f89ee422cc4fdf5b2835a73d248285" name="a72f89ee422cc4fdf5b2835a73d248285"></a>
|
||||
constexpr size_t </td><td class="memItemRight" valign="bottom"><b>kiwi::defaultTagSize</b> = (size_t)<a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebba83878c91171338902e0fe0fb97a8c47a">POSTag::p</a></td></tr>
|
||||
<tr class="separator:a72f89ee422cc4fdf5b2835a73d248285"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Kiwi C++ API에 쓰이는 주요 타입들을 모아놓은 헤더 파일 </p>
|
||||
<dl class="section author"><dt>Author</dt><dd>bab2min (<a href="#" onclick="location.href='mai'+'lto:'+'bab'+'2m'+'in@'+'gm'+'ail'+'.c'+'om'; return false;">bab2m<span class="obfuscator">.nosp@m.</span>in@g<span class="obfuscator">.nosp@m.</span>mail.<span class="obfuscator">.nosp@m.</span>com</a>) </dd></dl>
|
||||
<dl class="section version"><dt>Version</dt><dd>0.23.1 </dd></dl>
|
||||
<dl class="section date"><dt>Date</dt><dd>2026-04-05 </dd></dl>
|
||||
</div><h2 class="groupheader">Typedef Documentation</h2>
|
||||
<a id="a1f2cff3b6a7a1d78c447635f1d84ebe1" name="a1f2cff3b6a7a1d78c447635f1d84ebe1"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1f2cff3b6a7a1d78c447635f1d84ebe1">◆ </a></span>KString</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">using <a class="el" href="Types_8h.html#a1f2cff3b6a7a1d78c447635f1d84ebe1">kiwi::KString</a> = typedef std::basic_string<kchar_t></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>std::u16string의 내부용 타입. mimalloc 옵션에 따라 mi_stl_allocator로부터 메모리를 할당받는다. </p>
|
||||
<dl class="section note"><dt>Note</dt><dd>KString은 std::u16string과 동일한 역할을 수행하지만, mimalloc 사용시 KString이 좀 더 빠른 속도로 메모리를 할당 받을 수 있음. </dd></dl>
|
||||
<dl class="section see"><dt>See also</dt><dd>Vector </dd></dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a22049affb93ad297719245d28ffc10ff" name="a22049affb93ad297719245d28ffc10ff"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a22049affb93ad297719245d28ffc10ff">◆ </a></span>UnorderedMap</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<typename _K , typename _V , typename _Hash = Hash<_K>> </div>
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">using <a class="el" href="Types_8h.html#a22049affb93ad297719245d28ffc10ff">kiwi::UnorderedMap</a> = typedef std::unordered_map<_K, _V, _Hash></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>std::unordered_map의 내부용 타입. mimalloc 옵션에 따라 mi_stl_allocator로부터 메모리를 할당받는다. </p>
|
||||
<dl class="section note"><dt>Note</dt><dd>UnorderMap은 std::unordered_map과 동일한 역할을 수행하지만, mimalloc 사용시 UnorderMap이 좀 더 빠른 속도로 메모리를 할당 받을 수 있음. </dd></dl>
|
||||
<dl class="section see"><dt>See also</dt><dd>Vector </dd></dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a48d29484f2a48f6a4de60bbfd7746232" name="a48d29484f2a48f6a4de60bbfd7746232"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a48d29484f2a48f6a4de60bbfd7746232">◆ </a></span>Vector</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<typename _Ty > </div>
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">using <a class="el" href="Types_8h.html#a48d29484f2a48f6a4de60bbfd7746232">kiwi::Vector</a> = typedef std::vector<_Ty></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>std::vector의 내부용 타입. mimalloc 옵션에 따라 mi_stl_allocator로부터 메모리를 할당받는다. </p>
|
||||
<dl class="section note"><dt>Note</dt><dd>Vector는 std::vector와 동일한 역할을 수행하지만, mimalloc 사용시 Vector가 좀 더 빠른 속도로 메모리를 할당 받을 수 있음. Vector와 std::vector는 섞어 쓸 수 없다. Kiwi 내부에서만 사용할 것이라면 Vector를, 외부로 반환해야할 값이라면 std::vector를 사용할 것. </dd></dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Enumeration Type Documentation</h2>
|
||||
<a id="a7b5ed1c7b90b79877f32c8a011c06ff3" name="a7b5ed1c7b90b79877f32c8a011c06ff3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7b5ed1c7b90b79877f32c8a011c06ff3">◆ </a></span>BuildOption</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">enum class <a class="el" href="Types_8h.html#a7b5ed1c7b90b79877f32c8a011c06ff3">kiwi::BuildOption</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>KiwiBuilder 생성시 사용되는 비트 플래그 </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="classkiwi_1_1KiwiBuilder.html" title="형태소 분석에 사용될 사전을 관리하고, 사전을 바탕으로 실제 형태소 분석을 수행하는 Kiwi의 인스턴스를 생성하는 클래스.">kiwi::KiwiBuilder</a></code> </dd></dl>
|
||||
<table class="fieldtable">
|
||||
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a7b5ed1c7b90b79877f32c8a011c06ff3a9d4cda55511905f877949ea8055fc681" name="a7b5ed1c7b90b79877f32c8a011c06ff3a9d4cda55511905f877949ea8055fc681"></a>integrateAllomorph </td><td class="fielddoc"><p>이형태 통합 여부를 설정한다. 이 옵션을 사용시 <code>아/EC, 어/EC, 여/EC</code> 와 같은 형태소들이 <code>어/EC</code>로 통합되어 출력된다. </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a7b5ed1c7b90b79877f32c8a011c06ff3ac336925b8868bb0c4749738a647abf6b" name="a7b5ed1c7b90b79877f32c8a011c06ff3ac336925b8868bb0c4749738a647abf6b"></a>loadDefaultDict </td><td class="fielddoc"><p>기본 사전(default.dict)의 로딩 여부를 설정한다. 기본 사전은 위키백과 및 나무위키의 표제어로 구성되어 있다. </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a7b5ed1c7b90b79877f32c8a011c06ff3af29c7cef55d5f13ec9ad2a53a5d10096" name="a7b5ed1c7b90b79877f32c8a011c06ff3af29c7cef55d5f13ec9ad2a53a5d10096"></a>loadTypoDict </td><td class="fielddoc"><p>오타 사전(typo.dict)의 로딩 여부를 설정한다. </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a7b5ed1c7b90b79877f32c8a011c06ff3a35c1071f1f1a9c497fa503f0ae028068" name="a7b5ed1c7b90b79877f32c8a011c06ff3a35c1071f1f1a9c497fa503f0ae028068"></a>loadMultiDict </td><td class="fielddoc"><p>복합명사 사전(multi.dict)의 로딩 여부를 설정한다. 복합명사 사전은 복합명사의 구성 형태소를 저장하고 있다. </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7903fe33da04a788b0bb009094596894" name="a7903fe33da04a788b0bb009094596894"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7903fe33da04a788b0bb009094596894">◆ </a></span>CondPolarity</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">enum class <a class="el" href="Types_8h.html#a7903fe33da04a788b0bb009094596894">kiwi::CondPolarity</a> : uint8_t</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>선행 형태소의 양/음성 조건(모음 조화)과 관련된 열거형 </p>
|
||||
<table class="fieldtable">
|
||||
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a7903fe33da04a788b0bb009094596894a334c4a4c42fdb79d7ebc3e73b517e6f8" name="a7903fe33da04a788b0bb009094596894a334c4a4c42fdb79d7ebc3e73b517e6f8"></a>none </td><td class="fielddoc"><p>조건이 설정되지 않음 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a7903fe33da04a788b0bb009094596894a82082716189f80fd070b89ac716570ba" name="a7903fe33da04a788b0bb009094596894a82082716189f80fd070b89ac716570ba"></a>positive </td><td class="fielddoc"><p>선행 형태소가 양성(ㅏ,ㅑ,ㅗ)인 경우만 등장 가능 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a7903fe33da04a788b0bb009094596894a228d6a97a9838dc800e58b3c74ba7b11" name="a7903fe33da04a788b0bb009094596894a228d6a97a9838dc800e58b3c74ba7b11"></a>negative </td><td class="fielddoc"><p>선행 형태소가 음성(그 외)인 경우만 등장 가능 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a7903fe33da04a788b0bb009094596894a8f72c327aea57de5c5a3f9f21b56a233" name="a7903fe33da04a788b0bb009094596894a8f72c327aea57de5c5a3f9f21b56a233"></a>non_adj </td><td class="fielddoc"><p>선행 형태소가 형용사가 아닌 경우만 등장 가능 (모음조화와 관련없지만 효율성을 위해 여기에 삽입) </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a11856481b15f24bf19cb647734ea1085" name="a11856481b15f24bf19cb647734ea1085"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a11856481b15f24bf19cb647734ea1085">◆ </a></span>CondVowel</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">enum class <a class="el" href="Types_8h.html#a11856481b15f24bf19cb647734ea1085">kiwi::CondVowel</a> : uint8_t</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>선행 형태소의 종성 여부 조건과 관련된 열거형 </p>
|
||||
<table class="fieldtable">
|
||||
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085a334c4a4c42fdb79d7ebc3e73b517e6f8" name="a11856481b15f24bf19cb647734ea1085a334c4a4c42fdb79d7ebc3e73b517e6f8"></a>none </td><td class="fielddoc"><p>조건이 설정되지 않음 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085a100b8cad7cf2a56f6df78f171f97a1ec" name="a11856481b15f24bf19cb647734ea1085a100b8cad7cf2a56f6df78f171f97a1ec"></a>any </td><td class="fielddoc"><p>자음, 모음 여부와 상관 없이 등장 가능 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085afb4ee69c5a35ca74a417d6a047332d6b" name="a11856481b15f24bf19cb647734ea1085afb4ee69c5a35ca74a417d6a047332d6b"></a>vowel </td><td class="fielddoc"><p>선행 형태소가 받침이 없는 경우만 등장 가능 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085ae0f179bce9cffadffe0d89748fc964b5" name="a11856481b15f24bf19cb647734ea1085ae0f179bce9cffadffe0d89748fc964b5"></a>vocalic </td><td class="fielddoc"><p>선행 형태소가 받침이 없거나 ㄹ받침인 경우만 등장 가능 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085af54eb722f1fe5293d0f94d938e011e1f" name="a11856481b15f24bf19cb647734ea1085af54eb722f1fe5293d0f94d938e011e1f"></a>vocalic_h </td><td class="fielddoc"><p>선행 형태소가 받침이 없거나 ㄹ, ㅎ 받침인 경우만 등장 가능 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085a76dde0fd73c7fdd6674bc90b0bd53b35" name="a11856481b15f24bf19cb647734ea1085a76dde0fd73c7fdd6674bc90b0bd53b35"></a>non_vowel </td><td class="fielddoc"><p><code>vowel</code>의 부정 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085a2d6fc377a92748a81f519882e20a2a53" name="a11856481b15f24bf19cb647734ea1085a2d6fc377a92748a81f519882e20a2a53"></a>non_vocalic </td><td class="fielddoc"><p><code>vocalic</code>의 부정 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085a547d69d64835c70f869a0fe0120f6501" name="a11856481b15f24bf19cb647734ea1085a547d69d64835c70f869a0fe0120f6501"></a>non_vocalic_h </td><td class="fielddoc"><p><code>vocalic_h</code>의 부정 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085a1a65fd4015955dc79e66e177130c6797" name="a11856481b15f24bf19cb647734ea1085a1a65fd4015955dc79e66e177130c6797"></a>applosive </td><td class="fielddoc"><p>오타 교정용: 불파음 받침(ㄴㄹㅁㅇ을 제외한 모든 받침) </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085a7129b7cbc85892b6cd1e877181759b76" name="a11856481b15f24bf19cb647734ea1085a7129b7cbc85892b6cd1e877181759b76"></a>continual </td><td class="fielddoc"><p>오타 교정용: 연철 환경임을 표시 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="a11856481b15f24bf19cb647734ea1085a81fd830c85363675edb98d2879916d8c" name="a11856481b15f24bf19cb647734ea1085a81fd830c85363675edb98d2879916d8c"></a>boundary </td><td class="fielddoc"><p>오타 교정용: 형태소 경계임을 표시 </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa9fc09d985bc896c97e2e0f5cd41c96f" name="aa9fc09d985bc896c97e2e0f5cd41c96f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa9fc09d985bc896c97e2e0f5cd41c96f">◆ </a></span>Dialect</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">enum class <a class="el" href="Types_8h.html#aa9fc09d985bc896c97e2e0f5cd41c96f">kiwi::Dialect</a> : uint16_t</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<table class="fieldtable">
|
||||
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96fac00f0c4675b91fb8b918e4079a0b1bac" name="aa9fc09d985bc896c97e2e0f5cd41c96fac00f0c4675b91fb8b918e4079a0b1bac"></a>standard </td><td class="fielddoc"><p>표준어 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96fa84c0e232e583410d3c16e081f1df9668" name="aa9fc09d985bc896c97e2e0f5cd41c96fa84c0e232e583410d3c16e081f1df9668"></a>gyeonggi </td><td class="fielddoc"><p>경기 방언 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96fa45c4b45068512daa5805d5672bbaeff9" name="aa9fc09d985bc896c97e2e0f5cd41c96fa45c4b45068512daa5805d5672bbaeff9"></a>chungcheong </td><td class="fielddoc"><p>충청 방언 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96faf54ccc6de001fe54a7e9f5472b7b1132" name="aa9fc09d985bc896c97e2e0f5cd41c96faf54ccc6de001fe54a7e9f5472b7b1132"></a>gangwon </td><td class="fielddoc"><p>강원 방언 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96fa7ca8deade90717ea30fd8c03a6e072b2" name="aa9fc09d985bc896c97e2e0f5cd41c96fa7ca8deade90717ea30fd8c03a6e072b2"></a>gyeongsang </td><td class="fielddoc"><p>경상 방언 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96faf38b501b734bd70dd0563c827f5642c1" name="aa9fc09d985bc896c97e2e0f5cd41c96faf38b501b734bd70dd0563c827f5642c1"></a>jeolla </td><td class="fielddoc"><p>전라 방언 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96fa899b662493af42f8254d35c19e10dcb0" name="aa9fc09d985bc896c97e2e0f5cd41c96fa899b662493af42f8254d35c19e10dcb0"></a>jeju </td><td class="fielddoc"><p>제주 방언 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96fa6ddc4246547f25bf759da7b1aac21e2d" name="aa9fc09d985bc896c97e2e0f5cd41c96fa6ddc4246547f25bf759da7b1aac21e2d"></a>hwanghae </td><td class="fielddoc"><p>황해 방언 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96fa9346ee5f29422c399c053d2899fee5f8" name="aa9fc09d985bc896c97e2e0f5cd41c96fa9346ee5f29422c399c053d2899fee5f8"></a>hamgyeong </td><td class="fielddoc"><p>함경 방언 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96fa70ae9293d75de22420b33b203fd70671" name="aa9fc09d985bc896c97e2e0f5cd41c96fa70ae9293d75de22420b33b203fd70671"></a>pyeongan </td><td class="fielddoc"><p>평안 방언 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="aa9fc09d985bc896c97e2e0f5cd41c96faa8a913fc16b969d03964dfdb314006d7" name="aa9fc09d985bc896c97e2e0f5cd41c96faa8a913fc16b969d03964dfdb314006d7"></a>archaic </td><td class="fielddoc"><p>옛말 </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af7906391a8e367cab5296bac8d4caafa" name="af7906391a8e367cab5296bac8d4caafa"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af7906391a8e367cab5296bac8d4caafa">◆ </a></span>ModelType</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">enum class <a class="el" href="Types_8h.html#af7906391a8e367cab5296bac8d4caafa">kiwi::ModelType</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<table class="fieldtable">
|
||||
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af7906391a8e367cab5296bac8d4caafaa334c4a4c42fdb79d7ebc3e73b517e6f8" name="af7906391a8e367cab5296bac8d4caafaa334c4a4c42fdb79d7ebc3e73b517e6f8"></a>none </td><td class="fielddoc"><p>Select default (smallest one of available) model </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="af7906391a8e367cab5296bac8d4caafaaf39ed5b6d0275dcbc4a2f5de624d95ae" name="af7906391a8e367cab5296bac8d4caafaaf39ed5b6d0275dcbc4a2f5de624d95ae"></a>largest </td><td class="fielddoc"><p>Select default (largest one of available) model </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="af7906391a8e367cab5296bac8d4caafaaac794a38581bb3bc7fb719e2b3331b8e" name="af7906391a8e367cab5296bac8d4caafaaac794a38581bb3bc7fb719e2b3331b8e"></a>knlm </td><td class="fielddoc"><p>Kneser-Ney Language Model </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="af7906391a8e367cab5296bac8d4caafaa037b02f21d877dfa5fc5bf220d47471b" name="af7906391a8e367cab5296bac8d4caafaa037b02f21d877dfa5fc5bf220d47471b"></a>sbg </td><td class="fielddoc"><p>Skip-Bigram Model </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="af7906391a8e367cab5296bac8d4caafaa3de6a8f9608ddd4ba89f97b36d7587d6" name="af7906391a8e367cab5296bac8d4caafaa3de6a8f9608ddd4ba89f97b36d7587d6"></a>cong </td><td class="fielddoc"><p>Contextual N-gram embedding Language Model (Only local context) </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="af7906391a8e367cab5296bac8d4caafaae3f0d49077d0c56e887f1ea94cb48c01" name="af7906391a8e367cab5296bac8d4caafaae3f0d49077d0c56e887f1ea94cb48c01"></a>congGlobal </td><td class="fielddoc"><p>Contextual N-gram embedding Language Model (local and global context) </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="af7906391a8e367cab5296bac8d4caafaad60d775d5dc985a13910f27ffc533519" name="af7906391a8e367cab5296bac8d4caafaad60d775d5dc985a13910f27ffc533519"></a>congFp32 </td><td class="fielddoc"><p>Contextual N-gram embedding Language Model (Only local context, non-quantized(slow) version) </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="af7906391a8e367cab5296bac8d4caafaab0c0607bc37511576e142197ccbab374" name="af7906391a8e367cab5296bac8d4caafaab0c0607bc37511576e142197ccbab374"></a>congGlobalFp32 </td><td class="fielddoc"><p>Contextual N-gram embedding Language Model (local and global context, non-quantized(slow) version) </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac15313ea8fffc5cc54475e10264ddebb" name="ac15313ea8fffc5cc54475e10264ddebb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac15313ea8fffc5cc54475e10264ddebb">◆ </a></span>POSTag</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">enum class <a class="el" href="Types_8h.html#ac15313ea8fffc5cc54475e10264ddebb">kiwi::POSTag</a> : uint8_t</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>형태소 품사 태그와 관련된 열거형 </p>
|
||||
<dl class="section note"><dt>Note</dt><dd>나머지 품사 태그에 대한 정보는 README.md 를 참조할 것. </dd></dl>
|
||||
<table class="fieldtable">
|
||||
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ac15313ea8fffc5cc54475e10264ddebbaad921d60486366258809553a3db49a4a" name="ac15313ea8fffc5cc54475e10264ddebbaad921d60486366258809553a3db49a4a"></a>unknown </td><td class="fielddoc"><p>미설정 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="ac15313ea8fffc5cc54475e10264ddebba83878c91171338902e0fe0fb97a8c47a" name="ac15313ea8fffc5cc54475e10264ddebba83878c91171338902e0fe0fb97a8c47a"></a>p </td><td class="fielddoc"><p>분할된 동사/형용사를 나타내는데 사용됨 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="ac15313ea8fffc5cc54475e10264ddebba2ffe4e77325d9a7152f7086ea7aa5114" name="ac15313ea8fffc5cc54475e10264ddebba2ffe4e77325d9a7152f7086ea7aa5114"></a>max </td><td class="fielddoc"><p>POSTag의 총 개수를 나타내는 용도 </p>
|
||||
</td></tr>
|
||||
<tr><td class="fieldname"><a id="ac15313ea8fffc5cc54475e10264ddebba39d3202ec495577fd03ee14c24767dd9" name="ac15313ea8fffc5cc54475e10264ddebba39d3202ec495577fd03ee14c24767dd9"></a>irregular </td><td class="fielddoc"><p>불규칙 활용을 하는 동/형용사를 나타내는데 사용됨 </p>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
18
Types_8h__dep__incl.dot
Normal file
18
Types_8h__dep__incl.dot
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
digraph "include/kiwi/Types.h"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="include/kiwi/Types.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Kiwi C++ API에 쓰이는 주요 타입들을 모아놓은 헤더 파일"];
|
||||
Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="include/kiwi/Form.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Form_8h.html",tooltip="형태 및 형태소에 관한 정보를 담는 구조체들이 선언된 헤더"];
|
||||
Node2 -> Node3 [id="edge2_Node000002_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node3 [id="Node000003",label="include/kiwi/Kiwi.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Kiwi_8h.html",tooltip="Kiwi C++ API를 담고 있는 헤더 파일"];
|
||||
Node1 -> Node3 [id="edge3_Node000001_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node1 -> Node4 [id="edge4_Node000001_Node000004",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node4 [id="Node000004",label="include/kiwi/SwTokenizer.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$SwTokenizer_8h.html",tooltip="형태소 기반의 Subword Tokenizer의 인터페이스를 담고 있는 헤더 파일"];
|
||||
Node1 -> Node5 [id="edge5_Node000001_Node000005",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node5 [id="Node000005",label="include/kiwi/TypoTransformer.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$TypoTransformer_8h.html",tooltip="오타 교정에 사용되는 TypoTransformer 및 관련 클래스들을 정의합니다."];
|
||||
Node5 -> Node3 [id="edge6_Node000005_Node000003",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
}
|
||||
32
Types_8h__incl.dot
Normal file
32
Types_8h__incl.dot
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
digraph "include/kiwi/Types.h"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="include/kiwi/Types.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="Kiwi C++ API에 쓰이는 주요 타입들을 모아놓은 헤더 파일"];
|
||||
Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="vector",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node3 [id="edge2_Node000001_Node000003",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node3 [id="Node000003",label="deque",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node4 [id="edge3_Node000001_Node000004",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node4 [id="Node000004",label="map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node5 [id="edge4_Node000001_Node000005",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node5 [id="Node000005",label="unordered_map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node6 [id="edge5_Node000001_Node000006",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node6 [id="Node000006",label="unordered_set",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node7 [id="edge6_Node000001_Node000007",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node7 [id="Node000007",label="string",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node8 [id="edge7_Node000001_Node000008",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node8 [id="Node000008",label="string_view",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node9 [id="edge8_Node000001_Node000009",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node9 [id="Node000009",label="memory",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node10 [id="edge9_Node000001_Node000010",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node10 [id="Node000010",label="type_traits",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node11 [id="edge10_Node000001_Node000011",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node11 [id="Node000011",label="functional",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node12 [id="edge11_Node000001_Node000012",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node12 [id="Node000012",label="stdexcept",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node1 -> Node13 [id="edge12_Node000001_Node000013",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node13 [id="Node000013",label="iostream",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
}
|
||||
180
TypoTransformer_8h.html
Normal file
180
TypoTransformer_8h.html
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>Kiwi: include/kiwi/TypoTransformer.h File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectalign">
|
||||
<div id="projectname">Kiwi
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.8 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_602883e5d098af516ca12f13d12399cf.html">kiwi</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#enum-members">Enumerations</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle"><div class="title">TypoTransformer.h File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p>오타 교정에 사용되는 TypoTransformer 및 관련 클래스들을 정의합니다.
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include "<a class="el" href="Types_8h.html">Types.h</a>"</code><br />
|
||||
<code>#include "Trie.hpp"</code><br />
|
||||
<code>#include "FrozenTrie.h"</code><br />
|
||||
<code>#include "Utils.h"</code><br />
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
Include dependency graph for TypoTransformer.h:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><img src="TypoTransformer_8h__incl.png" border="0" usemap="#ainclude_2kiwi_2TypoTransformer_8h" alt=""/></div>
|
||||
</div>
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
This graph shows which files directly or indirectly include this file:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><img src="TypoTransformer_8h__dep__incl.png" border="0" usemap="#ainclude_2kiwi_2TypoTransformer_8hdep" alt=""/></div>
|
||||
</div>
|
||||
</div><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1TypoCandidates.html">kiwi::TypoCandidates< u16wrap ></a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1TypoIterator.html">kiwi::TypoIterator< u16wrap ></a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1TypoIterator_1_1RetType.html">kiwi::TypoIterator< u16wrap >::RetType</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structkiwi_1_1TypoGraphNode.html">kiwi::TypoGraphNode</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1PreparedTypoTransformer.html">kiwi::PreparedTypoTransformer</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">오타 생성 및 교정 준비가 완료된 오타 생성기. <a class="el" href="classkiwi_1_1TypoTransformer.html#a4a7593c898a441e339c539185177ced0" title="현재 TypoTransformer를 사용하여 PreparedTypoTransformer를 생성합니다. PreparedTypoTransformer는 실제로 오타를 생성하거나 kiwi:...">kiwi::TypoTransformer::prepare()</a>로부터 생성됩니다. <a href="classkiwi_1_1PreparedTypoTransformer.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classkiwi_1_1TypoTransformer.html">kiwi::TypoTransformer</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">오타 교정에 사용되는 오타 생성기 정의자 <a href="classkiwi_1_1TypoTransformer.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
|
||||
Enumerations</h2></td></tr>
|
||||
<tr class="memitem:a9e6402b102bc510f823e209207bf44dc" id="r_a9e6402b102bc510f823e209207bf44dc"><td class="memItemLeft" align="right" valign="top"><a id="a9e6402b102bc510f823e209207bf44dc" name="a9e6402b102bc510f823e209207bf44dc"></a>enum class  </td><td class="memItemRight" valign="bottom"><b>DefaultTypoSet</b> { <br />
|
||||
  <b>withoutTypo</b>
|
||||
, <b>basicTypoSet</b>
|
||||
, <b>continualTypoSet</b>
|
||||
, <b>basicTypoSetWithContinual</b>
|
||||
, <br />
|
||||
  <b>lengtheningTypoSet</b>
|
||||
, <b>basicTypoSetWithContinualAndLengthening</b>
|
||||
, <b>dialect</b>
|
||||
<br />
|
||||
}</td></tr>
|
||||
<tr class="separator:a9e6402b102bc510f823e209207bf44dc"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:a9c6996f12769a9e6ae5cc8cb16c7e8bb" id="r_a9c6996f12769a9e6ae5cc8cb16c7e8bb"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classkiwi_1_1TypoTransformer.html">TypoTransformer</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="TypoTransformer_8h.html#a9c6996f12769a9e6ae5cc8cb16c7e8bb">kiwi::getDefaultTypoSet</a> (DefaultTypoSet set)</td></tr>
|
||||
<tr class="memdesc:a9c6996f12769a9e6ae5cc8cb16c7e8bb"><td class="mdescLeft"> </td><td class="mdescRight">기본 내장 오타 생성기를 반환합니다. <br /></td></tr>
|
||||
<tr class="separator:a9c6996f12769a9e6ae5cc8cb16c7e8bb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae53e9678993e96ca3a5b0822e913f85e" id="r_ae53e9678993e96ca3a5b0822e913f85e"><td class="memItemLeft" align="right" valign="top"><a id="ae53e9678993e96ca3a5b0822e913f85e" name="ae53e9678993e96ca3a5b0822e913f85e"></a>
|
||||
const <a class="el" href="classkiwi_1_1PreparedTypoTransformer.html">PreparedTypoTransformer</a> * </td><td class="memItemRight" valign="bottom"><b>kiwi::getDefaultPreparedTypoSet</b> (DefaultTypoSet set)</td></tr>
|
||||
<tr class="separator:ae53e9678993e96ca3a5b0822e913f85e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>오타 교정에 사용되는 TypoTransformer 및 관련 클래스들을 정의합니다. </p>
|
||||
<dl class="section author"><dt>Author</dt><dd>bab2min (<a href="#" onclick="location.href='mai'+'lto:'+'bab'+'2m'+'in@'+'gm'+'ail'+'.c'+'om'; return false;">bab2m<span class="obfuscator">.nosp@m.</span>in@g<span class="obfuscator">.nosp@m.</span>mail.<span class="obfuscator">.nosp@m.</span>com</a>) </dd></dl>
|
||||
<dl class="section version"><dt>Version</dt><dd>0.23.1 </dd></dl>
|
||||
<dl class="section date"><dt>Date</dt><dd>2026-04-05 </dd></dl>
|
||||
</div><h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="a9c6996f12769a9e6ae5cc8cb16c7e8bb" name="a9c6996f12769a9e6ae5cc8cb16c7e8bb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9c6996f12769a9e6ae5cc8cb16c7e8bb">◆ </a></span>getDefaultTypoSet()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">const TypoTransformer & kiwi::getDefaultTypoSet </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">DefaultTypoSet </td>
|
||||
<td class="paramname"><em>set</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>기본 내장 오타 생성기를 반환합니다. </p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">set</td><td>사용할 기본 내장 오타 생성기의 종류 </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
10
TypoTransformer_8h__dep__incl.dot
Normal file
10
TypoTransformer_8h__dep__incl.dot
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
digraph "include/kiwi/TypoTransformer.h"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="include/kiwi/TypoTransformer.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="오타 교정에 사용되는 TypoTransformer 및 관련 클래스들을 정의합니다."];
|
||||
Node1 -> Node2 [id="edge1_Node000001_Node000002",dir="back",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="include/kiwi/Kiwi.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Kiwi_8h.html",tooltip="Kiwi C++ API를 담고 있는 헤더 파일"];
|
||||
}
|
||||
34
TypoTransformer_8h__incl.dot
Normal file
34
TypoTransformer_8h__incl.dot
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
digraph "include/kiwi/TypoTransformer.h"
|
||||
{
|
||||
// LATEX_PDF_SIZE
|
||||
bgcolor="transparent";
|
||||
edge [fontname=Helvetica,fontsize=10,labelfontname=Helvetica,labelfontsize=10];
|
||||
node [fontname=Helvetica,fontsize=10,shape=box,height=0.2,width=0.4];
|
||||
Node1 [id="Node000001",label="include/kiwi/TypoTransformer.h",height=0.2,width=0.4,color="gray40", fillcolor="grey60", style="filled", fontcolor="black",tooltip="오타 교정에 사용되는 TypoTransformer 및 관련 클래스들을 정의합니다."];
|
||||
Node1 -> Node2 [id="edge1_Node000001_Node000002",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node2 [id="Node000002",label="Types.h",height=0.2,width=0.4,color="grey40", fillcolor="white", style="filled",URL="$Types_8h.html",tooltip="Kiwi C++ API에 쓰이는 주요 타입들을 모아놓은 헤더 파일"];
|
||||
Node2 -> Node3 [id="edge2_Node000002_Node000003",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node3 [id="Node000003",label="vector",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node4 [id="edge3_Node000002_Node000004",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node4 [id="Node000004",label="deque",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node5 [id="edge4_Node000002_Node000005",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node5 [id="Node000005",label="map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node6 [id="edge5_Node000002_Node000006",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node6 [id="Node000006",label="unordered_map",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node7 [id="edge6_Node000002_Node000007",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node7 [id="Node000007",label="unordered_set",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node8 [id="edge7_Node000002_Node000008",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node8 [id="Node000008",label="string",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node9 [id="edge8_Node000002_Node000009",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node9 [id="Node000009",label="string_view",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node10 [id="edge9_Node000002_Node000010",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node10 [id="Node000010",label="memory",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node11 [id="edge10_Node000002_Node000011",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node11 [id="Node000011",label="type_traits",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node12 [id="edge11_Node000002_Node000012",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node12 [id="Node000012",label="functional",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node13 [id="edge12_Node000002_Node000013",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node13 [id="Node000013",label="stdexcept",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
Node2 -> Node14 [id="edge13_Node000002_Node000014",color="steelblue1",style="solid",tooltip=" "];
|
||||
Node14 [id="Node000014",label="iostream",height=0.2,width=0.4,color="grey60", fillcolor="#E0E0E0", style="filled",tooltip=" "];
|
||||
}
|
||||
123
_static/_sphinx_javascript_frameworks_compat.js
Normal file
123
_static/_sphinx_javascript_frameworks_compat.js
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
/* Compatability shim for jQuery and underscores.js.
|
||||
*
|
||||
* Copyright Sphinx contributors
|
||||
* Released under the two clause BSD licence
|
||||
*/
|
||||
|
||||
/**
|
||||
* small helper function to urldecode strings
|
||||
*
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
|
||||
*/
|
||||
jQuery.urldecode = function(x) {
|
||||
if (!x) {
|
||||
return x
|
||||
}
|
||||
return decodeURIComponent(x.replace(/\+/g, ' '));
|
||||
};
|
||||
|
||||
/**
|
||||
* small helper function to urlencode strings
|
||||
*/
|
||||
jQuery.urlencode = encodeURIComponent;
|
||||
|
||||
/**
|
||||
* This function returns the parsed url parameters of the
|
||||
* current request. Multiple values per key are supported,
|
||||
* it will always return arrays of strings for the value parts.
|
||||
*/
|
||||
jQuery.getQueryParameters = function(s) {
|
||||
if (typeof s === 'undefined')
|
||||
s = document.location.search;
|
||||
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
||||
var result = {};
|
||||
for (var i = 0; i < parts.length; i++) {
|
||||
var tmp = parts[i].split('=', 2);
|
||||
var key = jQuery.urldecode(tmp[0]);
|
||||
var value = jQuery.urldecode(tmp[1]);
|
||||
if (key in result)
|
||||
result[key].push(value);
|
||||
else
|
||||
result[key] = [value];
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* highlight a given string on a jquery object by wrapping it in
|
||||
* span elements with the given class name.
|
||||
*/
|
||||
jQuery.fn.highlightText = function(text, className) {
|
||||
function highlight(node, addItems) {
|
||||
if (node.nodeType === 3) {
|
||||
var val = node.nodeValue;
|
||||
var pos = val.toLowerCase().indexOf(text);
|
||||
if (pos >= 0 &&
|
||||
!jQuery(node.parentNode).hasClass(className) &&
|
||||
!jQuery(node.parentNode).hasClass("nohighlight")) {
|
||||
var span;
|
||||
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
|
||||
if (isInSVG) {
|
||||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
||||
} else {
|
||||
span = document.createElement("span");
|
||||
span.className = className;
|
||||
}
|
||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
||||
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
||||
document.createTextNode(val.substr(pos + text.length)),
|
||||
node.nextSibling));
|
||||
node.nodeValue = val.substr(0, pos);
|
||||
if (isInSVG) {
|
||||
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||
var bbox = node.parentElement.getBBox();
|
||||
rect.x.baseVal.value = bbox.x;
|
||||
rect.y.baseVal.value = bbox.y;
|
||||
rect.width.baseVal.value = bbox.width;
|
||||
rect.height.baseVal.value = bbox.height;
|
||||
rect.setAttribute('class', className);
|
||||
addItems.push({
|
||||
"parent": node.parentNode,
|
||||
"target": rect});
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!jQuery(node).is("button, select, textarea")) {
|
||||
jQuery.each(node.childNodes, function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
}
|
||||
}
|
||||
var addItems = [];
|
||||
var result = this.each(function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
for (var i = 0; i < addItems.length; ++i) {
|
||||
jQuery(addItems[i].parent).before(addItems[i].target);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/*
|
||||
* backward compatibility for jQuery.browser
|
||||
* This will be supported until firefox bug is fixed.
|
||||
*/
|
||||
if (!jQuery.browser) {
|
||||
jQuery.uaMatch = function(ua) {
|
||||
ua = ua.toLowerCase();
|
||||
|
||||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(msie) ([\w.]+)/.exec(ua) ||
|
||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||
[];
|
||||
|
||||
return {
|
||||
browser: match[ 1 ] || "",
|
||||
version: match[ 2 ] || "0"
|
||||
};
|
||||
};
|
||||
jQuery.browser = {};
|
||||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
||||
}
|
||||
476
_static/base-stemmer.js
Normal file
476
_static/base-stemmer.js
Normal file
|
|
@ -0,0 +1,476 @@
|
|||
// @ts-check
|
||||
|
||||
/**@constructor*/
|
||||
BaseStemmer = function() {
|
||||
/** @protected */
|
||||
this.current = '';
|
||||
this.cursor = 0;
|
||||
this.limit = 0;
|
||||
this.limit_backward = 0;
|
||||
this.bra = 0;
|
||||
this.ket = 0;
|
||||
|
||||
/**
|
||||
* @param {string} value
|
||||
*/
|
||||
this.setCurrent = function(value) {
|
||||
this.current = value;
|
||||
this.cursor = 0;
|
||||
this.limit = this.current.length;
|
||||
this.limit_backward = 0;
|
||||
this.bra = this.cursor;
|
||||
this.ket = this.limit;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
this.getCurrent = function() {
|
||||
return this.current;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {BaseStemmer} other
|
||||
*/
|
||||
this.copy_from = function(other) {
|
||||
/** @protected */
|
||||
this.current = other.current;
|
||||
this.cursor = other.cursor;
|
||||
this.limit = other.limit;
|
||||
this.limit_backward = other.limit_backward;
|
||||
this.bra = other.bra;
|
||||
this.ket = other.ket;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.in_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor >= this.limit) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch > max || ch < min) return false;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
|
||||
this.cursor++;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_in_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor < this.limit) {
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch > max || ch < min)
|
||||
return true;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0)
|
||||
return true;
|
||||
this.cursor++;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.in_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor <= this.limit_backward) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch > max || ch < min) return false;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
|
||||
this.cursor--;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_in_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor > this.limit_backward) {
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch > max || ch < min) return true;
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return true;
|
||||
this.cursor--;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.out_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor >= this.limit) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch > max || ch < min) {
|
||||
this.cursor++;
|
||||
return true;
|
||||
}
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) {
|
||||
this.cursor++;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_out_grouping = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor < this.limit) {
|
||||
var ch = this.current.charCodeAt(this.cursor);
|
||||
if (ch <= max && ch >= min) {
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) != 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
this.cursor++;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.out_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
if (this.cursor <= this.limit_backward) return false;
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch > max || ch < min) {
|
||||
this.cursor--;
|
||||
return true;
|
||||
}
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) {
|
||||
this.cursor--;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number[]} s
|
||||
* @param {number} min
|
||||
* @param {number} max
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.go_out_grouping_b = function(s, min, max) {
|
||||
/** @protected */
|
||||
while (this.cursor > this.limit_backward) {
|
||||
var ch = this.current.charCodeAt(this.cursor - 1);
|
||||
if (ch <= max && ch >= min) {
|
||||
ch -= min;
|
||||
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) != 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
this.cursor--;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} s
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.eq_s = function(s)
|
||||
{
|
||||
/** @protected */
|
||||
if (this.limit - this.cursor < s.length) return false;
|
||||
if (this.current.slice(this.cursor, this.cursor + s.length) != s)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.cursor += s.length;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} s
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.eq_s_b = function(s)
|
||||
{
|
||||
/** @protected */
|
||||
if (this.cursor - this.limit_backward < s.length) return false;
|
||||
if (this.current.slice(this.cursor - s.length, this.cursor) != s)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.cursor -= s.length;
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Among[]} v
|
||||
* @return {number}
|
||||
*/
|
||||
this.find_among = function(v)
|
||||
{
|
||||
/** @protected */
|
||||
var i = 0;
|
||||
var j = v.length;
|
||||
|
||||
var c = this.cursor;
|
||||
var l = this.limit;
|
||||
|
||||
var common_i = 0;
|
||||
var common_j = 0;
|
||||
|
||||
var first_key_inspected = false;
|
||||
|
||||
while (true)
|
||||
{
|
||||
var k = i + ((j - i) >>> 1);
|
||||
var diff = 0;
|
||||
var common = common_i < common_j ? common_i : common_j; // smaller
|
||||
// w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional)
|
||||
var w = v[k];
|
||||
var i2;
|
||||
for (i2 = common; i2 < w[0].length; i2++)
|
||||
{
|
||||
if (c + common == l)
|
||||
{
|
||||
diff = -1;
|
||||
break;
|
||||
}
|
||||
diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2);
|
||||
if (diff != 0) break;
|
||||
common++;
|
||||
}
|
||||
if (diff < 0)
|
||||
{
|
||||
j = k;
|
||||
common_j = common;
|
||||
}
|
||||
else
|
||||
{
|
||||
i = k;
|
||||
common_i = common;
|
||||
}
|
||||
if (j - i <= 1)
|
||||
{
|
||||
if (i > 0) break; // v->s has been inspected
|
||||
if (j == i) break; // only one item in v
|
||||
|
||||
// - but now we need to go round once more to get
|
||||
// v->s inspected. This looks messy, but is actually
|
||||
// the optimal approach.
|
||||
|
||||
if (first_key_inspected) break;
|
||||
first_key_inspected = true;
|
||||
}
|
||||
}
|
||||
do {
|
||||
var w = v[i];
|
||||
if (common_i >= w[0].length)
|
||||
{
|
||||
this.cursor = c + w[0].length;
|
||||
if (w.length < 4) return w[2];
|
||||
var res = w[3](this);
|
||||
this.cursor = c + w[0].length;
|
||||
if (res) return w[2];
|
||||
}
|
||||
i = w[1];
|
||||
} while (i >= 0);
|
||||
return 0;
|
||||
};
|
||||
|
||||
// find_among_b is for backwards processing. Same comments apply
|
||||
/**
|
||||
* @param {Among[]} v
|
||||
* @return {number}
|
||||
*/
|
||||
this.find_among_b = function(v)
|
||||
{
|
||||
/** @protected */
|
||||
var i = 0;
|
||||
var j = v.length
|
||||
|
||||
var c = this.cursor;
|
||||
var lb = this.limit_backward;
|
||||
|
||||
var common_i = 0;
|
||||
var common_j = 0;
|
||||
|
||||
var first_key_inspected = false;
|
||||
|
||||
while (true)
|
||||
{
|
||||
var k = i + ((j - i) >> 1);
|
||||
var diff = 0;
|
||||
var common = common_i < common_j ? common_i : common_j;
|
||||
var w = v[k];
|
||||
var i2;
|
||||
for (i2 = w[0].length - 1 - common; i2 >= 0; i2--)
|
||||
{
|
||||
if (c - common == lb)
|
||||
{
|
||||
diff = -1;
|
||||
break;
|
||||
}
|
||||
diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2);
|
||||
if (diff != 0) break;
|
||||
common++;
|
||||
}
|
||||
if (diff < 0)
|
||||
{
|
||||
j = k;
|
||||
common_j = common;
|
||||
}
|
||||
else
|
||||
{
|
||||
i = k;
|
||||
common_i = common;
|
||||
}
|
||||
if (j - i <= 1)
|
||||
{
|
||||
if (i > 0) break;
|
||||
if (j == i) break;
|
||||
if (first_key_inspected) break;
|
||||
first_key_inspected = true;
|
||||
}
|
||||
}
|
||||
do {
|
||||
var w = v[i];
|
||||
if (common_i >= w[0].length)
|
||||
{
|
||||
this.cursor = c - w[0].length;
|
||||
if (w.length < 4) return w[2];
|
||||
var res = w[3](this);
|
||||
this.cursor = c - w[0].length;
|
||||
if (res) return w[2];
|
||||
}
|
||||
i = w[1];
|
||||
} while (i >= 0);
|
||||
return 0;
|
||||
};
|
||||
|
||||
/* to replace chars between c_bra and c_ket in this.current by the
|
||||
* chars in s.
|
||||
*/
|
||||
/**
|
||||
* @param {number} c_bra
|
||||
* @param {number} c_ket
|
||||
* @param {string} s
|
||||
* @return {number}
|
||||
*/
|
||||
this.replace_s = function(c_bra, c_ket, s)
|
||||
{
|
||||
/** @protected */
|
||||
var adjustment = s.length - (c_ket - c_bra);
|
||||
this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket);
|
||||
this.limit += adjustment;
|
||||
if (this.cursor >= c_ket) this.cursor += adjustment;
|
||||
else if (this.cursor > c_bra) this.cursor = c_bra;
|
||||
return adjustment;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.slice_check = function()
|
||||
{
|
||||
/** @protected */
|
||||
if (this.bra < 0 ||
|
||||
this.bra > this.ket ||
|
||||
this.ket > this.limit ||
|
||||
this.limit > this.current.length)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number} c_bra
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.slice_from = function(s)
|
||||
{
|
||||
/** @protected */
|
||||
var result = false;
|
||||
if (this.slice_check())
|
||||
{
|
||||
this.replace_s(this.bra, this.ket, s);
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {boolean}
|
||||
*/
|
||||
this.slice_del = function()
|
||||
{
|
||||
/** @protected */
|
||||
return this.slice_from("");
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {number} c_bra
|
||||
* @param {number} c_ket
|
||||
* @param {string} s
|
||||
*/
|
||||
this.insert = function(c_bra, c_ket, s)
|
||||
{
|
||||
/** @protected */
|
||||
var adjustment = this.replace_s(c_bra, c_ket, s);
|
||||
if (c_bra <= this.bra) this.bra += adjustment;
|
||||
if (c_bra <= this.ket) this.ket += adjustment;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
this.slice_to = function()
|
||||
{
|
||||
/** @protected */
|
||||
var result = '';
|
||||
if (this.slice_check())
|
||||
{
|
||||
result = this.current.slice(this.bra, this.ket);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
this.assign_to = function()
|
||||
{
|
||||
/** @protected */
|
||||
return this.current.slice(0, this.limit);
|
||||
};
|
||||
};
|
||||
906
_static/basic.css
Normal file
906
_static/basic.css
Normal file
|
|
@ -0,0 +1,906 @@
|
|||
/*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*/
|
||||
|
||||
/* -- main layout ----------------------------------------------------------- */
|
||||
|
||||
div.clearer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
div.section::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- relbar ---------------------------------------------------------------- */
|
||||
|
||||
div.related {
|
||||
width: 100%;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.related h3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.related ul {
|
||||
margin: 0;
|
||||
padding: 0 0 0 10px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.related li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
div.related li.right {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
/* -- sidebar --------------------------------------------------------------- */
|
||||
|
||||
div.sphinxsidebarwrapper {
|
||||
padding: 10px 5px 0 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar {
|
||||
float: left;
|
||||
width: 230px;
|
||||
margin-left: -100%;
|
||||
font-size: 90%;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap : break-word;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul,
|
||||
div.sphinxsidebar ul.want-points {
|
||||
margin-left: 20px;
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sphinxsidebar form {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar input {
|
||||
border: 1px solid #98dbcc;
|
||||
font-family: sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox form.search {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="text"] {
|
||||
float: left;
|
||||
width: 80%;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="submit"] {
|
||||
float: left;
|
||||
width: 20%;
|
||||
border-left: none;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* -- search page ----------------------------------------------------------- */
|
||||
|
||||
ul.search {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
ul.search li {
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
ul.search li a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.search li p.context {
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul.keywordmatches li.goodmatch a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* -- index page ------------------------------------------------------------ */
|
||||
|
||||
table.contentstable {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.contentstable p.biglink {
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
a.biglink {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
span.linkdescr {
|
||||
font-style: italic;
|
||||
padding-top: 5px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
/* -- general index --------------------------------------------------------- */
|
||||
|
||||
table.indextable {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.indextable td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.indextable ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
table.indextable > tbody > tr > td > ul {
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
table.indextable tr.pcap {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
table.indextable tr.cap {
|
||||
margin-top: 10px;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
img.toggler {
|
||||
margin-right: 3px;
|
||||
margin-top: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.modindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
div.genindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
/* -- domain module index --------------------------------------------------- */
|
||||
|
||||
table.modindextable td {
|
||||
padding: 2px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/* -- general body styles --------------------------------------------------- */
|
||||
|
||||
div.body {
|
||||
min-width: 360px;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||
-moz-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #551A8B;
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink,
|
||||
caption:hover > a.headerlink,
|
||||
p.caption:hover > a.headerlink,
|
||||
div.code-block-caption:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.body p.caption {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
div.body td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.first {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
p.rubric {
|
||||
margin-top: 30px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
img.align-left, figure.align-left, .figure.align-left, object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.align-right, figure.align-right, .figure.align-right, object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
img.align-center, figure.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
img.align-default, figure.align-default, .figure.align-default {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-default {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* -- sidebars -------------------------------------------------------------- */
|
||||
|
||||
div.sidebar,
|
||||
aside.sidebar {
|
||||
margin: 0 0 0.5em 1em;
|
||||
border: 1px solid #ddb;
|
||||
padding: 7px;
|
||||
background-color: #ffe;
|
||||
width: 40%;
|
||||
float: right;
|
||||
clear: right;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
p.sidebar-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
nav.contents,
|
||||
aside.topic,
|
||||
div.admonition, div.topic, blockquote {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- topics ---------------------------------------------------------------- */
|
||||
|
||||
nav.contents,
|
||||
aside.topic,
|
||||
div.topic {
|
||||
border: 1px solid #ccc;
|
||||
padding: 7px;
|
||||
margin: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
p.topic-title {
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
/* -- admonitions ----------------------------------------------------------- */
|
||||
|
||||
div.admonition {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
div.admonition dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
margin: 0px 10px 5px 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.body p.centered {
|
||||
text-align: center;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
/* -- content of sidebars/topics/admonitions -------------------------------- */
|
||||
|
||||
div.sidebar > :last-child,
|
||||
aside.sidebar > :last-child,
|
||||
nav.contents > :last-child,
|
||||
aside.topic > :last-child,
|
||||
div.topic > :last-child,
|
||||
div.admonition > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sidebar::after,
|
||||
aside.sidebar::after,
|
||||
nav.contents::after,
|
||||
aside.topic::after,
|
||||
div.topic::after,
|
||||
div.admonition::after,
|
||||
blockquote::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/* -- tables ---------------------------------------------------------------- */
|
||||
|
||||
table.docutils {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-default {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
table caption span.caption-text {
|
||||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
padding: 1px 8px 1px 5px;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #aaa;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
table.citation td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
th > :first-child,
|
||||
td > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
th > :last-child,
|
||||
td > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
/* -- figures --------------------------------------------------------------- */
|
||||
|
||||
div.figure, figure {
|
||||
margin: 0.5em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.figure p.caption, figcaption {
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-number,
|
||||
figcaption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-text,
|
||||
figcaption span.caption-text {
|
||||
}
|
||||
|
||||
/* -- field list styles ----------------------------------------------------- */
|
||||
|
||||
table.field-list td, table.field-list th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.field-list ul {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.field-list p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.field-name {
|
||||
-moz-hyphens: manual;
|
||||
-ms-hyphens: manual;
|
||||
-webkit-hyphens: manual;
|
||||
hyphens: manual;
|
||||
}
|
||||
|
||||
/* -- hlist styles ---------------------------------------------------------- */
|
||||
|
||||
table.hlist {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
table.hlist td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* -- object description styles --------------------------------------------- */
|
||||
|
||||
.sig {
|
||||
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||
}
|
||||
|
||||
.sig-name, code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.sig-name {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.sig-prename, code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.sig-param.n {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* C++ specific styling */
|
||||
|
||||
.sig-inline.c-texpr,
|
||||
.sig-inline.cpp-texpr {
|
||||
font-family: unset;
|
||||
}
|
||||
|
||||
.sig.c .k, .sig.c .kt,
|
||||
.sig.cpp .k, .sig.cpp .kt {
|
||||
color: #0033B3;
|
||||
}
|
||||
|
||||
.sig.c .m,
|
||||
.sig.cpp .m {
|
||||
color: #1750EB;
|
||||
}
|
||||
|
||||
.sig.c .s, .sig.c .sc,
|
||||
.sig.cpp .s, .sig.cpp .sc {
|
||||
color: #067D17;
|
||||
}
|
||||
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha;
|
||||
}
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha;
|
||||
}
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman;
|
||||
}
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:first-child > :first-child,
|
||||
:not(li) > ul > li:first-child > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:last-child > :last-child,
|
||||
:not(li) > ul > li:last-child > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
ol.simple ol p,
|
||||
ol.simple ul p,
|
||||
ul.simple ol p,
|
||||
ul.simple ul p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple > li:not(:first-child) > p,
|
||||
ul.simple > li:not(:first-child) > p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple p,
|
||||
ul.simple p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
aside.footnote > span,
|
||||
div.citation > span {
|
||||
float: left;
|
||||
}
|
||||
aside.footnote > span:last-of-type,
|
||||
div.citation > span:last-of-type {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
aside.footnote > p {
|
||||
margin-left: 2em;
|
||||
}
|
||||
div.citation > p {
|
||||
margin-left: 4em;
|
||||
}
|
||||
aside.footnote > p:last-of-type,
|
||||
div.citation > p:last-of-type {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
aside.footnote > p:last-of-type:after,
|
||||
div.citation > p:last-of-type:after {
|
||||
content: "";
|
||||
clear: both;
|
||||
}
|
||||
|
||||
dl.field-list {
|
||||
display: grid;
|
||||
grid-template-columns: fit-content(30%) auto;
|
||||
}
|
||||
|
||||
dl.field-list > dt {
|
||||
font-weight: bold;
|
||||
word-break: break-word;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
dl.field-list > dd {
|
||||
padding-left: 0.5em;
|
||||
margin-top: 0em;
|
||||
margin-left: 0em;
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
dd > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
dd ul, dd table {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 10px;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.sig dd {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.sig dl {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
dl > dd:last-child,
|
||||
dl > dd:last-child > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt:target, span.highlighted {
|
||||
background-color: #fbe54e;
|
||||
}
|
||||
|
||||
rect.highlighted {
|
||||
fill: #fbe54e;
|
||||
}
|
||||
|
||||
dl.glossary dt {
|
||||
font-weight: bold;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.versionmodified {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.system-message {
|
||||
background-color: #fda;
|
||||
padding: 5px;
|
||||
border: 3px solid red;
|
||||
}
|
||||
|
||||
.footnote:target {
|
||||
background-color: #ffa;
|
||||
}
|
||||
|
||||
.line-block {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.line-block .line-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
.guilabel, .menuselection {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.accelerator {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.classifier {
|
||||
font-style: oblique;
|
||||
}
|
||||
|
||||
.classifier:before {
|
||||
font-style: normal;
|
||||
margin: 0 0.5em;
|
||||
content: ":";
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
abbr, acronym {
|
||||
border-bottom: dotted 1px;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
/* -- code displays --------------------------------------------------------- */
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||
}
|
||||
|
||||
pre, div[class*="highlight-"] {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
span.pre {
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
hyphens: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div[class*="highlight-"] {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
table.highlighttable {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tbody {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tr {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
table.highlighttable td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
table.highlighttable td.code {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.highlight .hll {
|
||||
display: block;
|
||||
}
|
||||
|
||||
div.highlight pre,
|
||||
table.highlighttable pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption + div {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption {
|
||||
margin-top: 1em;
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div.code-block-caption code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos,
|
||||
span.linenos,
|
||||
div.highlight span.gp { /* gp: Generic.Prompt */
|
||||
user-select: none;
|
||||
-webkit-user-select: text; /* Safari fallback only */
|
||||
-webkit-user-select: none; /* Chrome/Safari */
|
||||
-moz-user-select: none; /* Firefox */
|
||||
-ms-user-select: none; /* IE10+ */
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-number {
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-text {
|
||||
}
|
||||
|
||||
div.literal-block-wrapper {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
code.xref, a code {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.viewcode-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
float: right;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
margin: -1px -10px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
/* -- math display ---------------------------------------------------------- */
|
||||
|
||||
img.math {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.body div.math p {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
span.eqno {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.eqno a.headerlink {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
div.math:hover a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* -- printout stylesheet --------------------------------------------------- */
|
||||
|
||||
@media print {
|
||||
div.document,
|
||||
div.documentwrapper,
|
||||
div.bodywrapper {
|
||||
margin: 0 !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.sphinxsidebar,
|
||||
div.related,
|
||||
div.footer,
|
||||
#top-link {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
1
_static/css/badge_only.css
Normal file
1
_static/css/badge_only.css
Normal file
|
|
@ -0,0 +1 @@
|
|||
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}
|
||||
BIN
_static/css/fonts/Roboto-Slab-Bold.woff
Normal file
BIN
_static/css/fonts/Roboto-Slab-Bold.woff
Normal file
Binary file not shown.
BIN
_static/css/fonts/Roboto-Slab-Bold.woff2
Normal file
BIN
_static/css/fonts/Roboto-Slab-Bold.woff2
Normal file
Binary file not shown.
BIN
_static/css/fonts/Roboto-Slab-Regular.woff
Normal file
BIN
_static/css/fonts/Roboto-Slab-Regular.woff
Normal file
Binary file not shown.
BIN
_static/css/fonts/Roboto-Slab-Regular.woff2
Normal file
BIN
_static/css/fonts/Roboto-Slab-Regular.woff2
Normal file
Binary file not shown.
BIN
_static/css/fonts/fontawesome-webfont.eot
Normal file
BIN
_static/css/fonts/fontawesome-webfont.eot
Normal file
Binary file not shown.
2671
_static/css/fonts/fontawesome-webfont.svg
Normal file
2671
_static/css/fonts/fontawesome-webfont.svg
Normal file
File diff suppressed because it is too large
Load diff
|
After Width: | Height: | Size: 434 KiB |
BIN
_static/css/fonts/fontawesome-webfont.ttf
Normal file
BIN
_static/css/fonts/fontawesome-webfont.ttf
Normal file
Binary file not shown.
BIN
_static/css/fonts/fontawesome-webfont.woff
Normal file
BIN
_static/css/fonts/fontawesome-webfont.woff
Normal file
Binary file not shown.
BIN
_static/css/fonts/fontawesome-webfont.woff2
Normal file
BIN
_static/css/fonts/fontawesome-webfont.woff2
Normal file
Binary file not shown.
BIN
_static/css/fonts/lato-bold-italic.woff
Normal file
BIN
_static/css/fonts/lato-bold-italic.woff
Normal file
Binary file not shown.
BIN
_static/css/fonts/lato-bold-italic.woff2
Normal file
BIN
_static/css/fonts/lato-bold-italic.woff2
Normal file
Binary file not shown.
BIN
_static/css/fonts/lato-bold.woff
Normal file
BIN
_static/css/fonts/lato-bold.woff
Normal file
Binary file not shown.
BIN
_static/css/fonts/lato-bold.woff2
Normal file
BIN
_static/css/fonts/lato-bold.woff2
Normal file
Binary file not shown.
BIN
_static/css/fonts/lato-normal-italic.woff
Normal file
BIN
_static/css/fonts/lato-normal-italic.woff
Normal file
Binary file not shown.
BIN
_static/css/fonts/lato-normal-italic.woff2
Normal file
BIN
_static/css/fonts/lato-normal-italic.woff2
Normal file
Binary file not shown.
BIN
_static/css/fonts/lato-normal.woff
Normal file
BIN
_static/css/fonts/lato-normal.woff
Normal file
Binary file not shown.
BIN
_static/css/fonts/lato-normal.woff2
Normal file
BIN
_static/css/fonts/lato-normal.woff2
Normal file
Binary file not shown.
4
_static/css/theme.css
Normal file
4
_static/css/theme.css
Normal file
File diff suppressed because one or more lines are too long
150
_static/doctools.js
Normal file
150
_static/doctools.js
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
/*
|
||||
* Base JavaScript utilities for all Sphinx HTML documentation.
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
|
||||
"TEXTAREA",
|
||||
"INPUT",
|
||||
"SELECT",
|
||||
"BUTTON",
|
||||
]);
|
||||
|
||||
const _ready = (callback) => {
|
||||
if (document.readyState !== "loading") {
|
||||
callback();
|
||||
} else {
|
||||
document.addEventListener("DOMContentLoaded", callback);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
const Documentation = {
|
||||
init: () => {
|
||||
Documentation.initDomainIndexTable();
|
||||
Documentation.initOnKeyListeners();
|
||||
},
|
||||
|
||||
/**
|
||||
* i18n support
|
||||
*/
|
||||
TRANSLATIONS: {},
|
||||
PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
|
||||
LOCALE: "unknown",
|
||||
|
||||
// gettext and ngettext don't access this so that the functions
|
||||
// can safely bound to a different name (_ = Documentation.gettext)
|
||||
gettext: (string) => {
|
||||
const translated = Documentation.TRANSLATIONS[string];
|
||||
switch (typeof translated) {
|
||||
case "undefined":
|
||||
return string; // no translation
|
||||
case "string":
|
||||
return translated; // translation exists
|
||||
default:
|
||||
return translated[0]; // (singular, plural) translation tuple exists
|
||||
}
|
||||
},
|
||||
|
||||
ngettext: (singular, plural, n) => {
|
||||
const translated = Documentation.TRANSLATIONS[singular];
|
||||
if (typeof translated !== "undefined")
|
||||
return translated[Documentation.PLURAL_EXPR(n)];
|
||||
return n === 1 ? singular : plural;
|
||||
},
|
||||
|
||||
addTranslations: (catalog) => {
|
||||
Object.assign(Documentation.TRANSLATIONS, catalog.messages);
|
||||
Documentation.PLURAL_EXPR = new Function(
|
||||
"n",
|
||||
`return (${catalog.plural_expr})`,
|
||||
);
|
||||
Documentation.LOCALE = catalog.locale;
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to focus on search bar
|
||||
*/
|
||||
focusSearchBar: () => {
|
||||
document.querySelectorAll("input[name=q]")[0]?.focus();
|
||||
},
|
||||
|
||||
/**
|
||||
* Initialise the domain index toggle buttons
|
||||
*/
|
||||
initDomainIndexTable: () => {
|
||||
const toggler = (el) => {
|
||||
const idNumber = el.id.substr(7);
|
||||
const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
|
||||
if (el.src.substr(-9) === "minus.png") {
|
||||
el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
|
||||
toggledRows.forEach((el) => (el.style.display = "none"));
|
||||
} else {
|
||||
el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
|
||||
toggledRows.forEach((el) => (el.style.display = ""));
|
||||
}
|
||||
};
|
||||
|
||||
const togglerElements = document.querySelectorAll("img.toggler");
|
||||
togglerElements.forEach((el) =>
|
||||
el.addEventListener("click", (event) => toggler(event.currentTarget)),
|
||||
);
|
||||
togglerElements.forEach((el) => (el.style.display = ""));
|
||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
|
||||
},
|
||||
|
||||
initOnKeyListeners: () => {
|
||||
// only install a listener if it is really needed
|
||||
if (
|
||||
!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS
|
||||
&& !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
|
||||
)
|
||||
return;
|
||||
|
||||
document.addEventListener("keydown", (event) => {
|
||||
// bail for input elements
|
||||
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName))
|
||||
return;
|
||||
// bail with special keys
|
||||
if (event.altKey || event.ctrlKey || event.metaKey) return;
|
||||
|
||||
if (!event.shiftKey) {
|
||||
switch (event.key) {
|
||||
case "ArrowLeft":
|
||||
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
|
||||
|
||||
const prevLink = document.querySelector('link[rel="prev"]');
|
||||
if (prevLink && prevLink.href) {
|
||||
window.location.href = prevLink.href;
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
case "ArrowRight":
|
||||
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
|
||||
|
||||
const nextLink = document.querySelector('link[rel="next"]');
|
||||
if (nextLink && nextLink.href) {
|
||||
window.location.href = nextLink.href;
|
||||
event.preventDefault();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// some keyboard layouts may need Shift to get /
|
||||
switch (event.key) {
|
||||
case "/":
|
||||
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
|
||||
Documentation.focusSearchBar();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
// quick alias for translations
|
||||
const _ = Documentation.gettext;
|
||||
|
||||
_ready(Documentation.init);
|
||||
13
_static/documentation_options.js
Normal file
13
_static/documentation_options.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
const DOCUMENTATION_OPTIONS = {
|
||||
VERSION: '',
|
||||
LANGUAGE: 'en',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
FILE_SUFFIX: '.html',
|
||||
LINK_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt',
|
||||
NAVIGATION_WITH_KEYS: false,
|
||||
SHOW_SEARCH_SUMMARY: true,
|
||||
ENABLE_SEARCH_SHORTCUTS: true,
|
||||
};
|
||||
1066
_static/english-stemmer.js
Normal file
1066
_static/english-stemmer.js
Normal file
File diff suppressed because it is too large
Load diff
BIN
_static/file.png
Normal file
BIN
_static/file.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 286 B |
BIN
_static/fonts/Lato/lato-bold.eot
Normal file
BIN
_static/fonts/Lato/lato-bold.eot
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-bold.ttf
Normal file
BIN
_static/fonts/Lato/lato-bold.ttf
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-bold.woff
Normal file
BIN
_static/fonts/Lato/lato-bold.woff
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-bold.woff2
Normal file
BIN
_static/fonts/Lato/lato-bold.woff2
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-bolditalic.eot
Normal file
BIN
_static/fonts/Lato/lato-bolditalic.eot
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-bolditalic.ttf
Normal file
BIN
_static/fonts/Lato/lato-bolditalic.ttf
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-bolditalic.woff
Normal file
BIN
_static/fonts/Lato/lato-bolditalic.woff
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-bolditalic.woff2
Normal file
BIN
_static/fonts/Lato/lato-bolditalic.woff2
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-italic.eot
Normal file
BIN
_static/fonts/Lato/lato-italic.eot
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-italic.ttf
Normal file
BIN
_static/fonts/Lato/lato-italic.ttf
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-italic.woff
Normal file
BIN
_static/fonts/Lato/lato-italic.woff
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-italic.woff2
Normal file
BIN
_static/fonts/Lato/lato-italic.woff2
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-regular.eot
Normal file
BIN
_static/fonts/Lato/lato-regular.eot
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-regular.ttf
Normal file
BIN
_static/fonts/Lato/lato-regular.ttf
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-regular.woff
Normal file
BIN
_static/fonts/Lato/lato-regular.woff
Normal file
Binary file not shown.
BIN
_static/fonts/Lato/lato-regular.woff2
Normal file
BIN
_static/fonts/Lato/lato-regular.woff2
Normal file
Binary file not shown.
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
Normal file
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
Normal file
Binary file not shown.
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
Normal file
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
Normal file
Binary file not shown.
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
Normal file
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
Normal file
Binary file not shown.
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
Normal file
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
Normal file
Binary file not shown.
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
Normal file
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
Normal file
Binary file not shown.
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
Normal file
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
Normal file
Binary file not shown.
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
Normal file
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
Normal file
Binary file not shown.
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
Normal file
BIN
_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
Normal file
Binary file not shown.
12
_static/graphviz.css
Normal file
12
_static/graphviz.css
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
/*
|
||||
* Sphinx stylesheet -- graphviz extension.
|
||||
*/
|
||||
|
||||
img.graphviz {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
object.graphviz {
|
||||
max-width: 100%;
|
||||
}
|
||||
2
_static/jquery.js
vendored
Normal file
2
_static/jquery.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
_static/js/badge_only.js
Normal file
1
_static/js/badge_only.js
Normal file
|
|
@ -0,0 +1 @@
|
|||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}});
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue