๐ฅ NetKiwi
July 1, 2026 ยท View on GitHub
- ๐ฅKiwi (์ง๋ฅํ ํ๊ตญ์ด ํํ์ ๋ถ์๊ธฐ)๋ฅผ C#์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ ํจํค์ง์์.
- ๐ฅ Supported OS:
win-x86,win-x64,osx-x64,linux-x64 - ๐ฅCurrent Kiwi Version:
0.23.2
๐ฅ Install
dotnet add package NetKiwi
๐ฅ Licence
- Kiwi: LGPL 3.0
๐ฅ Basic Usage
using NetKiwi.Backend;
public void ExampleAnalyze()
{
Kiwi kiwi = new KiwiBuilder().Build(); // Kiwi ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค
Result[] result = kiwi.Analyze("๋ชจ๋ ๊ตญ๋ฏผ์ ์ธ๊ฐ์ผ๋ก์์ ์กด์๊ณผ ๊ฐ์น๋ฅผ ๊ฐ์ง๋ฉฐ, ํ๋ณต์ ์ถ๊ตฌํ ๊ถ๋ฆฌ๋ฅผ ๊ฐ์ง๋ค. ๊ตญ๊ฐ๋ ๊ฐ์ธ์ด ๊ฐ์ง๋ ๋ถ๊ฐ์นจ์ ๊ธฐ๋ณธ์ ์ธ๊ถ์ ํ์ธํ๊ณ ์ด๋ฅผ ๋ณด์ฅํ ์๋ฌด๋ฅผ ์ง๋ค."); // ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ต๋๋ค
foreach (Result res in result) // foreach๋ก ์ํํฉ๋๋ค
{
foreach (Token t in res.morphs)
{
Console.WriteLine($"๋ถ์๋ ํํ์: {t.form}");
Console.WriteLine($"๋ถ์๋ ํํ์์ ํ๊ทธ: {t.tag}");
}
}
}
using NetKiwi.Backend;
public void ExampleAnalyzeWithUsing()
{
using (Kiwi kiwi = new KiwiBuilder().Build()) // ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํด using ๋ธ๋ก์ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
{
Result[] result = kiwi.Analyze("๋ชจ๋ ๊ตญ๋ฏผ์ ์ธ๊ฐ์ผ๋ก์์ ์กด์๊ณผ ๊ฐ์น๋ฅผ ๊ฐ์ง๋ฉฐ, ํ๋ณต์ ์ถ๊ตฌํ ๊ถ๋ฆฌ๋ฅผ ๊ฐ์ง๋ค. ๊ตญ๊ฐ๋ ๊ฐ์ธ์ด ๊ฐ์ง๋ ๋ถ๊ฐ์นจ์ ๊ธฐ๋ณธ์ ์ธ๊ถ์ ํ์ธํ๊ณ ์ด๋ฅผ ๋ณด์ฅํ ์๋ฌด๋ฅผ ์ง๋ค."); // ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ต๋๋ค
foreach (Result res in result) // foreach๋ก ์ํํฉ๋๋ค
{
foreach (Token t in res.morphs)
{
Console.WriteLine($"๋ถ์๋ ํํ์: {t.form}");
Console.WriteLine($"๋ถ์๋ ํํ์์ ํ๊ทธ: {t.tag}");
}
}
} // using ๋ธ๋ก์ด ๋๋๋ฉด Kiwi ๊ฐ์ฒด๊ฐ ์๋์ผ๋ก Dispose ๋ฉ๋๋ค
}
using NetKiwi.Backend;
public void ExampleAnalyzeMulti() // ์ฌ๋ฌ ๋ฌธ์ฅ์ ๋์์ ๋ถ์ํ๋ ์์ ์
๋๋ค.
{
using (Kiwi kiwi = new KiwiBuilder().Build())
{
string[] arr = new string[100];
for (int i = 0; i < 100; ++i)
{
arr[i] = String.Format("ํ
์คํธ {0}์
๋๋ค.", i);
}
kiwi.AnalyzeMulti((i) =>
{
if (i >= arr.Length) return null;
return arr[i];
}, (i, res) =>
{
Console.WriteLine($"{res.Length}"); // res์ ๊ธธ์ด๋ TopN๊ณผ ๊ฐ์ต๋๋ค(์ด ์์ ์์๋ TopN = 1).
// AnalyzeMulti๋ ๊ฐ ๋ฌธ์ฅ์ ๋ํด topN๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ฐ์ ๋ฌธ์ฅ์ ๋ํด ์ฌ๋ฌ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ถ๋ค๋ฉด topN์ ๋๋ฆฌ๋ฉด ๋ฉ๋๋ค.
Console.WriteLine($"๋ฌธ์ฅ {i}์ ๋ถ์ ๊ฒฐ๊ณผ:");
Console.WriteLine($"๋ถ์๋ ํํ์ ์: {res[0].morphs.Length}");
Console.WriteLine($"๋ถ์๋ ํํ์: {string.Join(", ", res[0].morphs.Select(m => m.form))}");
return 0;
});
}
}