Skip to content

Commit

Permalink
tokenize upd
Browse files Browse the repository at this point in the history
  • Loading branch information
locusclassicus committed Sep 4, 2024
1 parent af3fae2 commit de16a48
Show file tree
Hide file tree
Showing 8 changed files with 213 additions and 188 deletions.
50 changes: 24 additions & 26 deletions book/tokenize.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,11 @@ Cтроки слов содержат следующие поля:
предложения; может быть диапазоном токенов с несколькими словами.
2. `FORM`: словоформа или знак препинания.
3. `LEMMA`: Лемма или основа словоформы.
4. `UPOSTAG`: универсальный тег части речи.
5. `XPOSTAG`: тег части речи для конкретного языка.
4. `UPOSTAG`: тег части речи из универсального набора проекта UD, который создавался для того, чтобы аннотации разных языков были сравнимы между собой.
5. `XPOSTAG`: тег части речи, который выбрали исследователи под конкретные нужды языка
6. `FEATS`: список морфологических характеристик.
7. `HEAD`: заголовок текущего токена, который является либо
значением ID, либо нулем (0).
8. `DEPREL`: Universal Stanford dependency relation к (root iff HEAD
= 0) или определенному зависящему от языка подтипу.
7. `HEAD`: идентификатор (номер) синтаксической вершины текущего токена. Если такой вершины нет, то ставят ноль (0).
8. `DEPREL`: характер синтаксической зависимости.
9. `DEPS`: Список вторичных зависимостей.
10. `MISC`: любая другая аннотация.

Expand Down Expand Up @@ -280,27 +278,23 @@ wordcloud(nouns$lemma, nouns$n, colors = pal, max.words = 130)

```{r}
rel_pron <- caesar_pos3 |>
filter(str_detect(feats, "PronType=Rel"))
filter(str_detect(feats, "PronType=Rel")) |>
as_tibble()
rel_pron |>
select(token, lemma, upos, xpos)
rel_pron
```

Посмотрим на некоторые местоимения в контексте. Для этого добавим html-теги:
Посмотрим на некоторые местоимения в контексте.

```{r results='asis'}
highlight_string <- function(idx) {
str_replace_all(
rel_pron$sentence[idx],
str_glue("(?<= ){rel_pron$token[idx]}(?=\\W)"),
str_glue("<mark>{rel_pron$token[idx]}</mark>"))
}
highlight_string(1)
highlight_string(13)
rel_pron |>
filter(row_number() %in% c(1, 7)) |>
mutate(html_token = paste0("<mark>", token, "</mark>")) |>
mutate(html_sent = str_replace(sentence, token, html_token)) |>
pull(html_sent)
```


## Поле XPOS

Чтение `xpos` требует сноровки: например причастие _sublata_ там описывается так: `v-srppfb-`, где
Expand Down Expand Up @@ -407,7 +401,7 @@ sent |>
textplot_dependencyparser(sent, size = 3)
```

Прилагательные _nobilissiumus_ и _ditissimus_ верно опознаны в качестве именной части сказуемого при подлежащем "Оргеториг". Информация, которая на графе представлена стрелками, хранится в таблице в полях `token_id` и `head_token_id` и `dep_rel`. Корневой токен всегда имеет значение `0`, то есть ни от чего не зависит.
Прилагательные "nobilissiumus" и "ditissimus" верно опознаны в качестве именной части сказуемого при подлежащем "Оргеториг". Информация, которая на графе представлена стрелками, хранится в таблице в полях `token_id` и `head_token_id` и `dep_rel`. Корень синтаксического дерева всегда имеет значение `0`, то есть ни от чего не зависит.

```{r}
sent |>
Expand Down Expand Up @@ -445,14 +439,16 @@ acl
Посмотрим на одно из таких предложений, в котором проявилась характерная для Цезаря черта: повторять антецедент относительного местоимения в придаточном. Например, вместо "было два пути, которыми..." он говорит "было два пути, каковыми путями...".

```{r}
acl |>
example_sentence <- acl |>
filter(id == "doc1_43") |>
select(-id, -sentence, -lemma, -deps, -misc) |>
select(-sentence, -deps, -misc) |>
relocate(dep_rel, .before = upos) |>
relocate(head_token_id, .before = upos)
example_sentence
```

Такие случаи можно попробовать выловить при помощи условия или нескольких условий, например:
Такие случаи можно попробовать выловить при помощи условия или нескольких условий, например достать такие относительные местоимения, сразу _за_ которыми стоит их вершина:

```{r}
out <- acl |>
Expand All @@ -467,10 +463,12 @@ out |>
mutate(html_token = paste0("<mark>", token, "</mark>")) |>
mutate(html_sent = str_replace(sentence, token, html_token)) |>
pull(html_sent) |>
head()
head(5)
```

Так мы захватили кое-что лишнее: условие можно продумать получше, но общий смысл ясен.
***

Так мы кое-что полезное поймали, но не все, потому что между местоимением и его антецедентом возможны другие слова (например, "каковыми _опасными_ путями"). С другой стороны, есть и кое-что лишнее, а именно случаи инкорпорации антецедента в придаточное предложение ("quae pars ..., ea" вместо "ea pars, quae..." ). В общем, условие можно дальше дорабатывать, но мы пока не будем этого делать.

## Совместная встречаемость слов

Expand Down
Binary file modified docs/lsa_files/figure-html/unnamed-chunk-10-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/lsa_files/figure-html/unnamed-chunk-46-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit de16a48

Please sign in to comment.