Digital Garden

Type-Token Ratio (TTR)

๐Ÿ‘€ 1

Type-Token Ratio (TTR)

ํ•œ ์ค„ ์š”์•ฝ

ํ…์ŠคํŠธ์—์„œ โ€œ๋‹ค์–‘ํ•œ ๋‹จ์–ด (Type)โ€์™€ โ€œ์ „์ฒด ๋‹จ์–ด (Token)โ€์˜ ๋น„์œจ๋กœ ์–ดํœ˜ ๋‹ค์–‘์„ฑ์„ ์ธก์ •ํ•˜๋Š” ์ง€ํ‘œ.

์‰ฌ์šด ์„ค๋ช…

TTR์€ โ€œ์–ผ๋งˆ๋‚˜ ๋‹ค์–‘ํ•œ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€โ€๋ฅผ ์ธก์ •ํ•œ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…:

  • Type (์œ ํ˜•): ์ค‘๋ณต ์ œ๊ฑฐํ•œ ๊ณ ์œ  ๋‹จ์–ด ์ˆ˜
  • Token (ํ† ํฐ): ์ „์ฒด ๋‹จ์–ด ์ˆ˜ (์ค‘๋ณต ํฌํ•จ)

์‰ฌ์šด ์˜ˆ์‹œ:

ํ…์ŠคํŠธ A (์–ดํœ˜ ๋‹ค์–‘์„ฑ ๋‚ฎ์Œ):

"๋‚˜๋Š” ํ•™๊ต์— ๊ฐ„๋‹ค. ๋‚˜๋Š” ์ง‘์— ๊ฐ„๋‹ค. ๋‚˜๋Š” ์นœ๊ตฌ ์ง‘์— ๊ฐ„๋‹ค."
Token (์ „์ฒด ๋‹จ์–ด): 12๊ฐœ
Type (๊ณ ์œ  ๋‹จ์–ด): ๋‚˜๋Š”, ํ•™๊ต์—, ๊ฐ„๋‹ค, ์ง‘์—, ์นœ๊ตฌ = 5๊ฐœ
TTR = 5/12 = 0.42

ํ…์ŠคํŠธ B (์–ดํœ˜ ๋‹ค์–‘์„ฑ ๋†’์Œ):

"๋‚˜๋Š” ํ•™๊ต์— ๊ฐ„๋‹ค. ์ฒ ์ˆ˜๋Š” ๋„์„œ๊ด€์œผ๋กœ ํ–ฅํ•œ๋‹ค. ์˜ํฌ๋Š” ๊ณต์›์„ ์‚ฐ์ฑ…ํ•œ๋‹ค."
Token (์ „์ฒด ๋‹จ์–ด): 12๊ฐœ
Type (๊ณ ์œ  ๋‹จ์–ด): ๋‚˜๋Š”, ํ•™๊ต์—, ๊ฐ„๋‹ค, ์ฒ ์ˆ˜๋Š”, ๋„์„œ๊ด€์œผ๋กœ, ํ–ฅํ•œ๋‹ค, ์˜ํฌ๋Š”, ๊ณต์›์„, ์‚ฐ์ฑ…ํ•œ๋‹ค = 9๊ฐœ
TTR = 9/12 = 0.75

๊ณ„์‚ฐ ๋ฐฉ๋ฒ•:

TTR = (๊ณ ์œ  ๋‹จ์–ด ์ˆ˜) / (์ „์ฒด ๋‹จ์–ด ์ˆ˜)

๋ฒ”์œ„: 0~1
- 0์— ๊ฐ€๊นŒ์›€: ๊ฐ™์€ ๋‹จ์–ด ๋ฐ˜๋ณต (๋‹จ์กฐ๋กœ์›€)
- 1์— ๊ฐ€๊นŒ์›€: ๋ชจ๋“  ๋‹จ์–ด๊ฐ€ ๋‹ค๋ฆ„ (๋‹ค์–‘ํ•จ)

ํ•ต์‹ฌ ํฌ์ธํŠธ

  • 0~1 ๋ฒ”์œ„: 1์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์–ดํœ˜๊ฐ€ ๋‹ค์–‘ํ•จ
  • ํ…์ŠคํŠธ ๊ธธ์ด ์˜์กด์„ฑ: ๊ธด ํ…์ŠคํŠธ์ผ์ˆ˜๋ก TTR ๋‚ฎ์•„์ง€๋Š” ๊ฒฝํ–ฅ (ํ•œ๊ณ„)
  • ์–ดํœ˜ ํ’๋ถ€์„ฑ: ์ž‘๋ฌธ ๋Šฅ๋ ฅ, ์–ธ์–ด ๋ฐœ๋‹ฌ ์ˆ˜์ค€ ์ง€ํ‘œ
  • ๋‚œ์ด๋„ ๊ด€๋ จ: ์ผ๋ฐ˜์ ์œผ๋กœ TTR ๋†’์œผ๋ฉด ์ฝ๊ธฐ ์–ด๋ ค์›€

๊ด€๋ จ ๊ฐœ๋…

R4 ์—ฐ๊ตฌ์—์„œ์˜ ์—ญํ• 

TTR์€ R4 ์—ฐ๊ตฌ์˜ D1 (์–ธ์–ด์  ๋ณต์žก์„ฑ) ๊ณ„์‚ฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

D1 ๊ณ„์‚ฐ ๋ฐฉ๋ฒ• (๋ณต์Šต):

def compute_linguistic_complexity(text):
    # 1. Flesch-Kincaid Grade Level
    fk_grade = flesch_kincaid_grade(text)  # 40% ๊ฐ€์ค‘์น˜

    # 2. Type-Token Ratio (์–ดํœ˜ ๋‹ค์–‘์„ฑ)
    tokens = tokenize(text)
    ttr = len(set(tokens)) / len(tokens)   # 30% ๊ฐ€์ค‘์น˜ โ† ์—ฌ๊ธฐ!

    # 3. ์ข…์†์ ˆ ๋น„์œจ
    subordinate_ratio = count_subordinate_clauses(text) / len(sentences)  # 30% ๊ฐ€์ค‘์น˜

    # ์ข…ํ•ฉ
    D1 = 0.4 ร— normalize(fk_grade) + 0.3 ร— ttr + 0.3 ร— subordinate_ratio
    return D1

์™œ TTR์ด ์ค‘์š”ํ•œ๊ฐ€?

์–ดํœ˜ ๋‹ค์–‘์„ฑ์€ ํ…์ŠคํŠธ ๋‚œ์ด๋„์˜ ์ค‘์š”ํ•œ ์ง€ํ‘œ:

๋‚ฎ์€ TTR (0.3~0.5):
- ๊ฐ™์€ ๋‹จ์–ด ๋ฐ˜๋ณต
- ๋‹จ์ˆœํ•œ ํ‘œํ˜„
- ์‰ฌ์šด ํ…์ŠคํŠธ
์˜ˆ: "๋‚˜๋Š” ๊ฐ„๋‹ค. ๋„ˆ๋Š” ๊ฐ„๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ„๋‹ค."

์ค‘๊ฐ„ TTR (0.5~0.7):
- ์ ๋‹นํ•œ ์–ดํœ˜ ๋‹ค์–‘์„ฑ
- ์ผ๋ฐ˜์  ํ…์ŠคํŠธ
์˜ˆ: ๋‰ด์Šค ๊ธฐ์‚ฌ, ์ผ๋ฐ˜ ์„ค๋ช…๋ฌธ

๋†’์€ TTR (0.7~0.9):
- ๋‹ค์–‘ํ•œ ์–ดํœ˜ ์‚ฌ์šฉ
- ๋ณต์žกํ•œ ํ‘œํ˜„
- ์–ด๋ ค์šด ํ…์ŠคํŠธ
์˜ˆ: ํ•™์ˆ  ๋…ผ๋ฌธ, ๋ฌธํ•™ ์ž‘ํ’ˆ

๋‚œ์ด๋„ ๋ถ„๋ฅ˜์— ํ™œ์šฉ:

OpenOrca-KO ๋ฐ์ดํ„ฐ์…‹ ๋ถ„์„:
์‰ฌ์šด ๋ฐ์ดํ„ฐ: TTR < 0.5, D1 ๋‚ฎ์Œ
์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ: TTR 0.5~0.7, D1 ์ค‘๊ฐ„
์–ด๋ ค์šด ๋ฐ์ดํ„ฐ: TTR > 0.7, D1 ๋†’์Œ

ZPD Window ์ ์šฉ:

ํ˜„์žฌ ๋ชจ๋ธ์ด TTR 0.6 ํ…์ŠคํŠธ๋ฅผ ์ž˜ ์ดํ•ดํ•จ
โ†’ ZPD ๋ฒ”์œ„: TTR 0.6~0.75 ์„ ํƒ
โ†’ TTR < 0.5๋Š” ๋„ˆ๋ฌด ์‰ฌ์›€ (์ œ์™ธ)
โ†’ TTR > 0.8์€ ๋„ˆ๋ฌด ์–ด๋ ค์›€ (์ œ์™ธ)

TTR์˜ ํ•œ๊ณ„์™€ ๋Œ€์‘:

๋ฌธ์ œ: ํ…์ŠคํŠธ๊ฐ€ ๊ธธ์ˆ˜๋ก TTR ๋‚ฎ์•„์ง

์งง์€ ํ…์ŠคํŠธ (20๋‹จ์–ด): TTR = 0.9 ๊ฐ€๋Šฅ
๊ธด ํ…์ŠคํŠธ (1000๋‹จ์–ด): TTR = 0.5 ์ •๋„
โ†’ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ํ…์ŠคํŠธ ๋น„๊ต ์–ด๋ ค์›€

๋Œ€์‘: ์ •๊ทœํ™”๋œ TTR ๋ณ€ํ˜• ์‚ฌ์šฉ

  • MATTR (Moving Average TTR): ์ผ์ • ์œˆ๋„์šฐ(์˜ˆ: 100๋‹จ์–ด)๋งˆ๋‹ค ๊ณ„์‚ฐ
  • Root TTR: โˆš(Type / Token)
  • R4 ์—ฐ๊ตฌ์—์„œ๋Š” ๋น„์Šทํ•œ ๊ธธ์ด์˜ ํ…์ŠคํŠธ๋งŒ ๋น„๊ต

๋” ์•Œ์•„๋ณด๊ธฐ

  • Lexical Diversity: TTR์˜ ํ•™์ˆ ์  ์šฉ์–ด
  • Yuleโ€™s K: TTR์˜ ๋Œ€์•ˆ ์ง€ํ‘œ (๊ธธ์ด ๋…๋ฆฝ์ )
  • MTLD (Measure of Textual Lexical Diversity): ์ตœ์‹  ์ง€ํ‘œ
  • ์•„๋™ ์–ธ์–ด ๋ฐœ๋‹ฌ ์—ฐ๊ตฌ์—์„œ TTR ํ™œ์šฉ (์—ฐ๋ น๋ณ„ TTR ์ฆ๊ฐ€)
  • ์ž‘๋ฌธ ํ‰๊ฐ€: TTR ๋†’์Œ = ๋” ํ’๋ถ€ํ•œ ํ‘œํ˜„๋ ฅ
  • ๊ธฐ๊ณ„ ๋ฒˆ์—ญ ํ‰๊ฐ€: TTR๋กœ ๋ฒˆ์—ญ ํ’ˆ์งˆ ์ธก์ •
  • ํ•œ๊ตญ์–ด TTR: ์กฐ์‚ฌ, ์–ด๋ฏธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง