Korean Noise Generator
Project description
한국어 노이즈 추가 (konoise)
한국어 문서에 노이즈를 추가하는 것을 돕는 파이썬 라이브러리입니다(Library for generating the noise in Korean).
지원
- manylinux (lastest version, 1.7.5)
- windows, macOS (old version)
설치 방법
$ pip install konoise
실행 방법
from konoise import NoiseGenerator
text = "행복한 가정은 모두가 닮았지만, 불행한 가정은 모두 저마다의 이유로 불행하다."
generator = NoiseGenerator(num_cores=8)
text = generator.generate(text, methods='disattach-letters', prob=1., delimeter='newline')
text
>>> 행복한 ㄱㅏ정은 모두ㄱㅏ 닮았ㅈㅣ만, 불행한 ㄱㅏ정은 모두 ㅈㅓㅁㅏㄷㅏ의 ㅇㅣ유로 불행ㅎㅏㄷㅏ.
-
text: 노이즈를 생성할 텍스트입니다.
-
methods: 노이즈 생성 방법입니다(사용가능한 방법들은 아래를 참고, default:).
-
prob: 노이즈를 생성하는 확률입니다(delimeter별로 적용, 0-1사이의 실수).
-
delimeter: 노이즈 적용, 멀티 프로세싱 적용의 기준이 되는 단위 입니다('total':전체,'newline':개행(\n),'sentence':문장).
-
use_rust_tokenizer: rust 기반 노이즈 생성기를 사용 할 지를 결정합니다.
노이즈 생성 방법
노이즈를 생성하는 방법은 총 6가지가 구현되어 있습니다.
'disattach-letters': disattach_letters,
'change-vowels': change_vowels,
'palatalization': partial(phonetic_change, func='palatalization'),
'linking': partial(phonetic_change, func='linking'),
'liquidization': partial(phonetic_change, func='liquidization'),
'nasalization': partial(phonetic_change, func='nasalization'),
'assimilation': partial(phonetic_change, func='assimilation'),
'yamin-jungum': yamin_jungum
- 쉼표(,)로 구분하여 여러 방법들을 같이 사용할 수 있습니다.
[disattach-letters] 자모 분리(alphabet separation)에 의한 노이즈 추가 방법입니다. 글자의 자음과 모음을 분리합니다. 단, 가독성을 위해 종성이 없으며 중성이 'ㅘ', 'ㅙ', 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅗ' 가 아닐 경우 실행합니다(예: 안녕하세요 > 안녕ㅎㅏㅅㅔ요)
[change-vowels] 모음 변형에 의한 노이즈 추가 방법입니다. 글자의 모음을 변형시킵니다. 단, 가독성을 위해 종성이 없으며 중성이 'ㅏ', 'ㅑ', 'ㅓ', 'ㅕ', 'ㅗ', 'ㅛ', 'ㅜ', 'ㅠ' 일 경우 실행합니다(예: 안녕하세요 > 안녕햐세오).
[palatalization] 음운 변화 중, 구개 음화를 구현하는 함수입니다.
[linking] 음운 변화 중, 연음을 구현하는 함수입니다.
[liquidization] 음운 변화 중, 유음화를 구현하는 함수입니다.
[nasalization] 음운 변화 중, 비음화를 구현하는 함수입니다.
[assimilation] 음운 변화 중, 음운동화를 구현하는 함수입니다.
[yamin-jungum] 야민정음으로 일부 글자를 변환합니다. 단, 가독성이 떨어지는 일부 표현은 제외되었습니다(귀여워 > 커여워).
변형 예시
[original] 행복한 가정은 모두가 닮았지만, 불행한 가정은 모두 저마다의 이유로 불행하다.
[disattach-letters, prob=1.] 행복한 ㄱㅏ정은 모두ㄱㅏ 닮았ㅈㅣ만, 불행한 ㄱㅏ정은 모두 ㅈㅓㅁㅏㄷㅏ의 ㅇㅣ유로 불행ㅎㅏㄷㅏ.
[change-vowels, prob=1.] 행복한 갸정은 묘듀갸 닮았지만, 불행한 갸정은 묘듀 져먀댜의 이우료 불행햐댜.
[palatalization, prob=1.] 행보칸 가정은 모두가 닮았지만, 불행한 가정은 모두 저마다의 이유로 불행하다.
[linking, prob=1.] 행복한 가정은 모두가 달맜지만, 불행한 가정은 모두 저마다의 이유로 불행하다.
[liquidization, prob=1.] 행복한 가정은 모두가 닮았지만, 불행한 가정은 모두 저마다의 이유로 불행하다.(No Change)
[nasalization, prob=1.] 행복한 가정은 모두가 닮았지만, 불행한 가정은 모두 저마다의 이유로 불행하다. (No Change)
[assimilation, prob=1.] 행복한 가정은 모두가 닮았지만, 불행한 가정은 모두 저마다의 이유로 불행하다. (No Change)
[yamin-jungum, prob=1.] 행복한 가정은 모두가 닮았지만, 불행한 가정은 모두 저마다의 이윾로 불행하다.
Noise Generator in Rust
- 노이즈 생성기 내에서 사용
from konoise import NoiseGenerator # provide the same methods(except yamin-jungum) # if you insert the string 'yamin-jungum', # it might be applied with the python generator # even if 'use_rust_tokenizer' is True text = "행복한 가정은 모두가 닮았지만, 불행한 가정은 모두 저마다의 이유로 불행하다." genertor = NoiseGenerator() genertor.generate(text, 'disattach-letters', 0.5, use_rust_tokenizer=True) >>> '행복한 ㄱㅏ정은 모두ㄱㅏ 닮았ㅈㅣ만, 불행한 ㄱㅏ정은 모두 ㅈㅓㅁㅏㄷㅏ의 ㅇㅣ유로 불행ㅎㅏㄷㅏ.'
- rust 모듈을 직접 사용
from konoise import rust_generator text = "행복한 가정은 모두가 닮았지만, 불행한 가정은 모두 저마다의 이유로 불행하다." rust_generator.get_noise(text, 'disattach-letters', 0.5) # provide the same methods(except yamin-jungum) >>> '행복한 ㄱㅏ정은 모두ㄱㅏ 닮았ㅈㅣ만, 불행한 ㄱㅏ정은 모두 ㅈㅓㅁㅏㄷㅏ의 ㅇㅣ유로 불행ㅎㅏㄷㅏ.'
기타
- 비음화, 유음화, 구개음화, 연음, 음운 동화의 모든 규칙이 구현되지 않은 상태이며, 추후 확대될 예정입니다(누락된 규칙이 있을 수 있으니, 발견 시 피드백 주시면 감사하겠습니다).
- prob는 변형 가능한 글자들에 대해서 해당 확률만큼 확률적으로 실행됩니다(prob가 1이라고 해서 모든 텍스트가 변경되는 것이 아닙니다).
- 두 개 이상의 방법을 사용할 경우(쉼표로 구분), 한 단위 텍스트에서 두 개의 방법이 사용되는 것이 아니라 각 단위 텍스트마다 랜덤하게 방법을 결정하여 실행합니다.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for konoise-1.0.8.5-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4184ae02fcf138e71b1cfe2c925a519bfa9b6c37bc3c4a8e92c57ad45fae6846 |
|
MD5 | 7c04976696421b25dbdc838b4bd1f6d2 |
|
BLAKE2b-256 | 46ffa135ed41a817f7ae2ae23db1fa2da40817c67dc6137a86d50d0db4b26593 |
Hashes for konoise-1.0.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee951b5fc203bdeb52f6bc35d0541cb7d54e1aa53054f16cc7892a6ba7581570 |
|
MD5 | 0f81808ea1a702420b21480e11c500b1 |
|
BLAKE2b-256 | d91b89f2199acc11fb5cbca7be4b5c7ebc4078c012ffd210f086dcdacc42ac98 |
Hashes for konoise-1.0.8.5-cp39-cp39-macosx_12_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f7739dbf8ad1c4779f261da5f61bea637b1540514cb0a5fb2b56a52dc3881e3 |
|
MD5 | 496c52592cef0ef53bf2c03fba3998ab |
|
BLAKE2b-256 | 769970762f1a9b45dd3407ead1b0e1fbefe0348b734769ce9b965a042b1c9f26 |
Hashes for konoise-1.0.8.5-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f43f181a463e1b603846e98c0b524f9b2495c146210a2c8c0026e2ea9b0278ab |
|
MD5 | c3b4f31aca11b3378c8d688dfc2d74e3 |
|
BLAKE2b-256 | c8edd2b42ef5ca8618f3982f8541d91c36991dd63e78b9bd821fcbc23c2bf090 |
Hashes for konoise-1.0.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92f28e319ee39caf35d51be5c613c150cc1a551b56a11e8456078e7d0a2b371c |
|
MD5 | 4a3bde9d4d7a844113e8fa708a334521 |
|
BLAKE2b-256 | 84aadbd4065551ce45143d4553621e06cb451085418e001ab69ebf1b60332d0b |
Hashes for konoise-1.0.8.5-cp38-cp38-macosx_12_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f52d8c70dd01848a7f5d9201640bf55b1c96c53823999099d6f63c8afa34e43 |
|
MD5 | 609fd052359651bd867bbe27cad823b2 |
|
BLAKE2b-256 | 1e9e40f6883ec1b45a177395821a37c1018ad09a7f375ec34c20dba6ef26b908 |
Hashes for konoise-1.0.8.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1f39665de3d990631885cc31c2edbb459480bf55e625ce4f2cc620c0f1f1f67 |
|
MD5 | ff348fa23e82d41bd139863ad5bc0fc4 |
|
BLAKE2b-256 | 48b8382558fe3d5a54bff1346ac7708b428d88f4c031acfc9ad4408410860e82 |