모든 챌린지
쉬움 0명 해결 정답률 0%

단어 토크나이저와 어휘 사전

텍스트를 소문자 단어로 나누고 빈도순 어휘 사전을 만듭니다. 모든 언어 모델의 첫 단계입니다.

배우게 될 내용

  • 텍스트를 소문자 단어 토큰으로 나누기
  • 단어 빈도 세기
  • 어휘를 빈도, 그다음 알파벳순으로 정렬하기

문제

원문 보기 (영어)

언어 모델은 원시 텍스트가 아니라 토큰을 다룹니다. 간단한 토크나이저는 텍스트를 소문자로 바꾸고, a-z 문자와 0-9 숫자가 연속된 부분을 하나의 단어로 봅니다. 그 밖의 모든 것(공백, 문장 부호, 기타 문자)은 단어를 구분합니다.

어휘 사전을 만드세요: 서로 다른 단어를 등장 횟수가 많은 순서로 정렬하고, 같으면 알파벳순으로 정렬합니다. 이 목록에서 단어의 위치가 토큰 ID입니다.

build_vocabulary(text)를 구현하세요.

입력

text: 임의의 텍스트.

출력

어휘 사전을 단어 목록으로 반환하세요. 텍스트에 단어가 없으면 빈 목록을 반환하세요.

제약 조건

0 ≤ text의 길이 ≤ 100,000

예시

예시 1
입력:
text = "The cat sat on the mat. The end!"

예상 출력:
expected = ["the", "cat", "end", "mat", "on", "sat"]
입력:
std::string text = "The cat sat on the mat. The end!";

예상 출력:
std::vector<std::string> expected = {"the", "cat", "end", "mat", "on", "sat"};
입력:
string text = "The cat sat on the mat. The end!";

예상 출력:
string[] expected = new string[] {"the", "cat", "end", "mat", "on", "sat"};

설명

소문자로 바꾸면 단어는 the, cat, sat, on, the, mat, the, end입니다. "the"는 3번, 나머지는 한 번씩 나오며 알파벳순으로 정렬됩니다: ["the", "cat", "end", "mat", "on", "sat"].

예시 2
입력:
text = "AI, ai and A.I. (2024)"

예상 출력:
expected = ["ai", "2024", "a", "and", "i"]
입력:
std::string text = "AI, ai and A.I. (2024)";

예상 출력:
std::vector<std::string> expected = {"ai", "2024", "a", "and", "i"};
입력:
string text = "AI, ai and A.I. (2024)";

예상 출력:
string[] expected = new string[] {"ai", "2024", "a", "and", "i"};

설명

단어: ai, ai, and, a, i, 2024. "ai"는 두 번, 나머지는 한 번씩 나오며 숫자가 문자보다 앞서는 알파벳순으로 정렬됩니다: ["ai", "2024", "a", "and", "i"].

참고 자료

이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.