각 대담 자에 따라 텍스트를 분할하려고합니다.
원본 텍스트의 형식은 다음과 같습니다.
이것은 음성 텍스트입니다. 1 인칭 : 안녕하세요,와 주셔서 감사합니다. 두 번째 사람 : 초대해 주셔서 감사합니다. TERCER PERSONA QUE SE LLAMA PEDRO : soy de acuerdo. CUARTA PERSONA (JOHN) : 안녕하세요. 어떻게 지내
다음과 같은 최종 결과를 찾고 있습니다.
첫 번째 열 : FIRST PERSON | SECOND PERSON | 3 인칭 페달 | 네 번째 사람 (존)
두 번째 칼럼 : 안녕하세요,와 주셔서 감사합니다 | 초대해 주셔서 감사합니다 | 콩 드 acuerdo | 안녕. 어떻게 지내
최종 결과는 다른 형식이나 모양이 변경 될 수도 있습니다.
분할 할 패턴은 하나 이상의 상위 단어와 ":"이지만 한 가지 어려움은 대문자로 된 패턴이 다음과 같은 선택적 문자를 가질 수 있다는 것입니다. () :,;
실제로 분할하려는 원본 텍스트는 다음과 같습니다. https://lopezobrador.org.mx/2021/01/14/version-estenografica-de-la-conferencia-de-prensa-matutina-del-presidente -안드레-마누엘 로페즈-오브라도 -458 /
나는 stringr rebus와 qdap을 사용하여 다른 것을 시도했습니다. 먼저이 패턴을 시도합니다.
pattern_mayusc <- UPPER %R% one_or_more(UPPER) %R% optional(") ") %R% ":"
다음으로 각 대담 자의 이름으로 벡터를 추출하여 패턴으로 사용하려고했습니다.
mayuscula<-sapply(str_extract_all(text, ".([A-Z]+:)"), paste, collapse= ' ')
나는 내가 원하는 것을 얻기에 가깝지만 그것을 달성 할 수 없다. 나를 도와 줄 사람이 있습니까? 많은 감사드립니다
당신은 사용할 수 있습니다 strsplit
경기가 그 중 하나의 패턴에 :
어떤 대문자로 일련의 단어 앞에 \p{Lu}
공백 ( \s
(당신이 필요로하는 경우 더)) 및 괄호, 또는 ( |
) 공간, 같은 순서 하였다. el
결과 목록에서 첫 번째 ement를 원하고 trimws
. 그 결과 화자와 텍스트가 번갈아 가며 matrix
행별로 2 열로 쉽게 변환 할 수 있습니다 .
pat <- r"{(?>\p{Lu}+?\s?)+\(?\p{Lu}+\)?\K(:)|(?<!\w)(\s)(?=\p{Lu}{2,})}"
# pat <- "(?>\\p{Lu}+?\\s?)+\\(?\\p{Lu}+\\)?\\K(:)|(?<!\\w)(\\s)(?=\\p{Lu}{2,})" ## for R < 4.0.0
tmp <- trimws(el(strsplit(x, pat, perl=TRUE)))[-1]
res <- matrix(tmp, ncol=2, byrow=TRUE)
res
# [,1] [,2]
# [1,] "FIRST PERSON" "hi all, thank you for coming."
# [2,] "SECOND PERSON" "thank you for inviting us."
# [3,] "TERCER PERSONA QUE SE LLAMA ANDRÉS" "soy de acuerdo."
# [4,] "CUARTA PERSONA (JOHN)" "Hi. How are you?"
# [5,] "ANDRÉS" "Hola buenos días!"
참고 항목 정규식 데모
데이터:
x <- "this is a speech text. FIRST PERSON: hi all, thank you for coming. SECOND PERSON: thank you for inviting us. TERCER PERSONA QUE SE LLAMA ANDRÉS: soy de: acuerdo. CUARTA PERSONA (JOHN): Hi. How are you? ANDRÉS: Hola buenos días!"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다