Структура базы данных для частоты совпадения больших слов с метаданными

Я хотел бы сохранить частоту, с которой слова встречаются друг с другом в различных контекстах в большом (> 1 миллиарда токенов) текстовом корпусе. Мне нужно сохранить пару слов, тип совпадения (например, слово1 в том же предложении, что и слово2, слово1 в том же абзаце, что и слово2) и некоторые метаданные о тексте, в котором было обнаружено совпадение (например, год, автор, издатель). Таким образом, одна строка может выглядеть так:

word1     word2   count decade publisher author context_type
-------------------------------------------------------------
nuclear   danger   22    1980s    NYT      n/a      paragraph

Частоты будут редкими и распределенными по Пуассону. Затем я хотел бы иметь возможность запрашивать данные по диапазонам дат или группам авторов (например), суммируя количество результатов.

У меня мало опыта работы с базами данных, и я не уверен, что использовать. Нужны ли мне связанные таблицы SQL (например, с метаданными книги в одной таблице и данными слов в другой) или простое плоское решение NoSql? Словарь составляет около 50 000 слов, так что если бы каждое слово-слово наблюдалось, было бы 2,5 миллиарда строк даже без метаданных (я думаю). Но, наверное, большинство из них не будет соблюдаться. Это заставляет меня думать, что, возможно, графическая база данных - возможное решение. Есть ли хорошее облачное решение на AWS или в Google?

Вероятно, вы можете сделать это довольно легко, используя реляционную базу данных. У вас будет несколько десятков миллионов строк (я предполагаю), и при правильной структуре запрос будет легко выполнить. Однако Stack Overflow - не место для рекомендаций по программному обеспечению.

Gordon Linoff 14.07.2018 15:03
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
137
1

Ответы 1

Google Cloud Bigtable или другая система NoSQL могут быть разумным выбором для этого типа запроса, поскольку это звучит как вариант с разреженным набором данных, но, как отмечалось ранее, этот вопрос больше подходит для https://softwareengineering.stackexchange.com/.

Другие вопросы по теме