Advanced SEO


Kanal geosi va tili: Butun dunyo, Ruscha


Advanced SEO - продвинутые методы продвижения сайтов в поисковых системах с использованием технологий обработки естественных языков, программирования, а также углубленных знаний о работе алгоритмов поиска.
Рекламы - нет!
Связь: @dart_kage

Связанные каналы  |  Похожие каналы

Kanal geosi va tili
Butun dunyo, Ruscha
Statistika
Postlar filtri


Вотермаркинг AI-контента от Google

Google DeepMind выпустила в open source технологию SynthID для создания и распознавания цифровых водяных знаков в контенте, созданном с помощью искусственного интеллекта. SynthID позволяет разработчикам внедрять незаметные для человека водяные знаки в текст, изображения, видео и аудио, с возможностью их последующей идентификации. Для текстов доступна версия SynthID Text, интегрированная в библиотеку Hugging Face Transformers и представленная на GitHub. Водяные знаки устойчивы к незначительным изменениям контента, однако могут ослабевать при значительных модификациях или переводах. Технология направлена на борьбу с дезинформацией и неправильной атрибуцией AI-контента.

Интересно, как много разработчиков LLM-ок внедрят у себя подобное и предоставят поисковикам инструменты быстрого определения?

https://deepmind.google/technologies/synthid/
https://ai.google.dev/responsible/docs/safeguards/synthid
https://huggingface.co/blog/synthid-text
https://github.com/google-deepmind/synthid-text


Indexing API похоже всё

Еще 24 сентября пользователь brian lowery заметил, что теперь в документации стандартная квота выдается только для тестирования, чтобы использовать API необходимо теперь заполнять форму и ждать апрува. Также brian lowery заявил, что API не работает даже на его сайте с вакансиями.

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

Индексирующие сервисы приуныли.


Indexing API: предупреждение от Google

Google добавили предупреждение спамерам о злоупотреблении Indexing API.

- Все отправки через Indexing API проверяются на спам.
- Попытки злоупотребления API ведут к аннулированию доступа.
- Примеры злоупотреблений: использование нескольких аккаунтов, превышение квот.


Ищите новые способы монетизации!

Мы все понимаем, что добыча трафика — это основная головная боль, но его монетизация также может стать серьезным вызовом. Особенно для дорвейщиков, которые полагаются на смартлинки и продолжают жаловаться на низкую конверсию и снижение доходности.

💡 Поиск монетизации — это часть процесса.

Не всегда офферы, представленные у партнерок, обеспечат вам выгодные условия. Несколько лет назад, еще до глобального апдейта японского Google, я генерировал японский dating-трафик с помощью дорвеев. Однако доход от lospollos был не выше $2,95 за 1000 уников (на картинке), а другие партнерки тоже не радовали.

👀 Мой эксперимент: Я искал офферы на японских сайтах, использовал форумы, Facebook и соцсети. В итоге нашел ребят, готовых платить $10 за 1000 уников (но не более $200 в сутки) японского дорвейного дейтинг трафика. При моих 10-15k трафика ежедневно и затратах в районе $250 в месяц на его поддержку, это был неплохой оффер! Пока у них не начались проблемы со стартапом, конечно :)

🔍 Что делать?
- Ищите офферы в интернете.
- Делайте объявления в группах социальных сетей и форумах.
- Помните, что белый бизнес готов покупать даже не самый качественный трафик.

Запомните, нытье о низкой конверсии не поможет! Всегда где-то там может оказаться ваш "золотой" оффер.


Кластеризатор массивных семантических ядер по схожести выдачи

Для огромных семантических ядер скорость и масштабирумость группировки может быть более важна, чем ее точность, поэтому для таких случаев у меня был в запасе другой алгоритм. Он является продолжением идеи кластеризации через меру Жаккара описанной в предыдущих постах (1, 2). В комментариях к постам и в личных сообщениях возник интерес к решениям для массивных семантических ядер, поэтому я переписал предыдущий скрипт для них.

За репост буду благодарен! 🙏

В алгоритме используется техника MinHash и LSH. Этот метод, основанный на хэшировании и индексации множеств, позволяет быстро искать частичные дубликаты на больших данных. Он также, как кластеризатор из предыдущих постов, менее ресурсоемкий, чем векторное преобразование и операции над матрицами.

В чем разница между мерой Жаккара и этим решением?

Точность vs. Эффективность: Коэффициент Жаккара обеспечивает точное значение схожести, но неэффективен для больших данных. MinHash и LSH предоставляют приближенное значение, но значительно более эффективны для обработки больших объемов данных.

Например, японское семантическое ядро в 480 тысяч ключевых фраз было сгруппировано за 30 минут. Конечный результат вполне устроил, учитывая, что метод на основе Жаккара считал такой объем более суток. Отлично подойдет для дорвейщиков!

Скачать можно здесь:
https://drive.google.com/file/d/1b01TbXmWINe3w0haneMcHVy-opFZkwqH/view?usp=share_link

Проект на Github:
https://github.com/dartseoengineer/keyword-clustering-minhash

Инструкция

Внимание! Этот скрипт только кластеризует, для сбора выдачи используйте сторонние программы, например, A-Parser.

1. Предварительно установите библиотеки pandas и tqdm.

pip install pandas
pip install tqdm
pip install datasketch


2. Инструкция по использованию скрипта в командной строке:

Обязательные аргументы

input_file: Путь к входному CSV файлу.
output_file: Путь для сохранения выходного файла с кластеризованными ключевыми словами.

Необязательные аргументы

-s, --separator: Разделитель во входном файле (по умолчанию: `,`).
-k, --keyword_col: Название столбца с ключевыми словами во входном файле (по умолчанию: `Keyword`).
-u, --url_col: Название столбца с URL во входном файле (по умолчанию: `URL`).
-t, --similarity_threshold: Порог схожести (по умолчанию: `0.6`).

Пример команды в терминале

python minhash-cluster-cli.py for-clustering.csv clustered_keywords.csv -s ';' -k 'keyword' -u 'url' -t 0.6


Файл результатов

1. Каждая группа в колонке Group имеет номер, начинающийся с 0.
2. Ключевые фразы, которые объеденены в один кластер, будут иметь один номер группы.
3. Если фраза не имеет общих групп с другими фразами, то она выделяется в отдельную группу.
4. Если фразы не имеют собранных URL, то они все выделяются в группу -1.


Скрипт кластеризации по топам

Это тот же кластеризатор, что сделан на базе Colab, но для тех, кто имеет базовые навыки python.

У кого данных много, будет удобнее запускать скрипт на своем компьютере. Поскольку используемый алгоритм "наивный", в угоду меньшему расходу ресурсов и точности, он работает медленно на большом количестве ключевых слов. На миллионах может понадобиться несколько суток, но скрипт все равно справится, если ему не мешать. На Macbook я его просто запускаю в фоне и работаю, пока он с минимальной нагрузкой кластеризует, главное не выключать ноут, только уходить в режим сна.

Скачать можно здесь:
https://drive.google.com/file/d/1lBE8encNcoRntB5bz3VjQHxoxKKIF4KW/view?usp=share_link

Проект на Github:
https://github.com/dartseoengineer/keyword-clustering

Скрипт сделан с возможностью запуска в терминале (командной строке).
На вход все так же подается CSV файл с как минимум 2-мя колонками: Keywords и URL.

1. Предварительно установите библиотеки pandas и tqdm.

pip install pandas
pip install tqdm


2. Инструкция по использованию скрипта в командной строке:

Обязательные аргументы

input_file: Путь к входному CSV файлу.
output_file: Путь для сохранения выходного файла с кластеризованными ключевыми словами.

Необязательные аргументы

-s, --separator: Разделитель во входном файле (по умолчанию: `,`).
-k, --keyword_col: Название столбца с ключевыми словами во входном файле (по умолчанию: `Keyword`).
-u, --url_col: Название столбца с URL во входном файле (по умолчанию: `URL`).
-t, --similarity_threshold: Порог схожести (по умолчанию: `0.6`).

Пример команды в терминале

python jaccard-score-cli.py for-clustering.csv clustered_keywords.csv -s ';' -k 'keyword' -u 'url' -t 0.6


Файл результатов

1. Каждая группа в колонке Group имеет номер, начинающийся с 0.
2. Ключевые фразы, которые объеденены в один кластер, будут иметь один номер группы.
3. Если фраза не имеет общих групп с другими фразами, то она выделяется в отдельную группу.
4. Если фразы не имеют собранных URL, то они все выделяются в группу -1.


Бесплатный кластеризатор по топам

Для собственных нужд, я сделал кластеризатор по похожести SERP. Побудило на создание меня следующее:

- Программы чаще всего сделаны под Windows.
- Сервисы обычно предоставляют услугу как дополнительную.
- На больших объемах не выгодно.
- Виснут на 100к+ ключевых слов, мне нужны большие объемы.
- ChatGPT предлагает кластеризацию, которая не справляется с большими объемами.
- Мне нужна была поддержка любых языков.
- Не требовательно к ресурсам.

Я подумал, что для URL не обязательно нужна векторизация. По сути топ это множество, а для множеств можно использовать другие формулы, поэтому сделал кластеризатор на основе Коэффициента Жаккара. Я опробовал и другие, например, Dice или Overlap, но они оказались хуже.

За репост буду благодарен! 🙏

Инструкция:

Сохраните себе копию данного файла на Google Drive через File, чтобы не сталкиваться каждый раз с предупреждением от Google Colab.

Внимание! Этот код только кластеризует, он не собирает выдачу. Собрать выдачу можно с помощью других сервисов, например, выгрузить Ahrefs с галочкой на Include top 10 positions from SERP for each keyword.

Для запуска необходимо нажать на кнопку play (▷) внизу и следовать инструкции.
1. Choose files. Загружаем CSV файл с, как минимум, 2-мя колонками: Keywords и URL.
2. Column delimiter. Вводим разделитель колонок. По умолчанию это запятая.
3. Keywords column label. Вводим заголовок колонки для поисковых фраз (чувствителен к регистру).
4. URL column label. Вводим заголовок колонки для URL (чувствителен к регистру).
5. Similarity threshold. Вводим порог похожести, я рекомендую 0,6.
6. Жмем кнопку Run.
7. После окончания работы нажимаем Save, чтобы сохранить в папку Downloads.

Файл результатов

1. Каждая группа в колонке Group имеет номер, начинающийся с 0.
2. Ключевые фразы, которые объеденены в один кластер, будут иметь один номер группы.
3. Если фраза не имеет общих групп с другими фразами, то она выделяется в отдельную группу.
4. Если фразы не имеют собранных URL, то они все выделяются в группу -1.

Внимание! В браузере Safari работает некорректно, необходимо использовать Chrome.

https://colab.research.google.com/drive/1QGNNuY7OSBErn5am-dS1lnubHr-65kSF?usp=sharing


Spam апдейты и parasite seo

Что наблюдаю в spam апдейты, так это всегда высокое ранжировение parasite дорвеев и статей, причем залетают не только новые, но и стабильно всплывают старые. Parasite SEO это всегда долгосрочная инвестиция, которая волнами приносит доход, даже спустя годы :)

У меня всего одна тестовая пачка essay дорвеев залитая на разные сервисы несколько лет назад, каждый год приносит около $1000. Мелочь, а приятно.


Источник бесплатных прокси

Если вы редко пользуетесть A-Parser’ом или другими программами для парсинга поисковых систем, сервисов и сайтов, то покупать подписку на прокси не имеет смысла.

Да, публичные прокси чаще выдают капчу, либо их блокируют, но я просто увеличиваю число потоков и попыток, иногда подключаю https://capmonster.cloud, который решает рекапчу за копейки.

Чтобы быстро и легко найти бесплатные списки прокси, нужно ввести в поиск по Github фразу "proxy list", отсортировать по дате и получить репозитории, которые собирают публичные адреса в обновляемые списки.

Этими списками я пользуюсь сам:

https://raw.githubusercontent.com/hookzof/socks5_list/master/pro
https://raw.githubusercontent.com/monosans/proxy-list/main/proxies/http.txt
https://raw.githubusercontent.com/monosans/proxy-list/main/proxies/socks4.txt
https://raw.githubusercontent.com/monosans/proxy-list/main/proxies/socks5.txt
https://raw.githubusercontent.com/proxy4parsing/proxy-list/main/http.txt
https://raw.githubusercontent.com/mmpx12/proxy-list/master/http.txt
https://raw.githubusercontent.com/mmpx12/proxy-list/master/https.txt
https://raw.githubusercontent.com/mmpx12/proxy-list/master/socks4.txt
https://raw.githubusercontent.com/mmpx12/proxy-list/master/socks5.txt
https://raw.githubusercontent.com/roosterkid/openproxylist/main/HTTPS_RAW.txt
https://raw.githubusercontent.com/roosterkid/openproxylist/main/SOCKS4_RAW.txt
https://raw.githubusercontent.com/roosterkid/openproxylist/main/SOCKS5_RAW.txt
https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt
https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks4.txt
https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks5.txt
https://raw.githubusercontent.com/andigwandi/free-proxy/main/proxy_list.txt
https://raw.githubusercontent.com/ErcinDedeoglu/proxies/main/proxies/http.txt
https://raw.githubusercontent.com/ErcinDedeoglu/proxies/main/proxies/https.txt
https://raw.githubusercontent.com/ErcinDedeoglu/proxies/main/proxies/socks4.txt
https://raw.githubusercontent.com/ErcinDedeoglu/proxies/main/proxies/socks5.txt
https://raw.githubusercontent.com/zevtyardt/proxy-list/main/all.txt
https://raw.githubusercontent.com/prxchk/proxy-list/main/all.txt
https://raw.githubusercontent.com/MuRongPIG/Proxy-Master/main/http.txt
https://raw.githubusercontent.com/MuRongPIG/Proxy-Master/main/socks4.txt
https://raw.githubusercontent.com/MuRongPIG/Proxy-Master/main/socks5.txt


По поводу слива Google

- Если кто-то не знает, то после слива в западном сообществе сеошников кипят страсти. Стоит написать какой-то инсайт по сливу, сразу же словишь лютый хейт в комментариях. Dejan, который узнал про документацию раньше остальных, скрыл этот факт от всех, настаивает на том, что больше данными из слива нельзя пользоваться, поскольку они скомпрометированы. Я с ним не согласен, так быстро всё поменять они не смогут, плюс есть фундаментальные принципы системы, изменение которых потребует время и деньги.

- Я к сливу отношусь очень хорошо. Да, в документации нужно уметь отделить то, что может использоваться в поиске и что нет, но это отличный источник поиска дополнительной информации. На основе данных я уже создал несколько задач на рабочих проектах, которые должны привести к еще большему росту трафика!

- Очень осторожно относитесь к интерпретациям тех или иных атрибутов из слива от seo-специалистов, поскольку все модули между собой связаны, их названия связаны и для полноценного понимания необходимо изучить целый пласт документов и желательно иметь представление о работе поисковых систем на техническом уровне, большинство seo-шников недостаточно осведомлены.

- Тезис "гугл это рандом" теперь разрушенный миф, гуглеры могут получить метрики сайта и понять почему тот или иной документ не получает трафик.

- Слив показал, чтобы хорошо понимать поиск, нужно в первую очередь читать документацию, изучить работу информационного поиска на уровне специалистов в этой области науки, изучать патенты, изучать новые решения проблем в той или иной области. Google это всего лишь коммерческий продукт. Есть некоторая коммерческая тайна, но основная научная работа ведется на университетском уровне.

Часто те или иные работы доступны только по платной подписке, либо только для конкретных университетов. Я пользуюсь проектом SciHub. Принцип работы следующий:

1. Вы находите научную работу с закрытым доступом. Например, эту https://www.sciencedirect.com/science/article/abs/pii/S095070511830621X
2. Заходите на сайт https://sci-hub.se, вставляете ссылку на нужную вам работу.
3. Получаете бесплатный доступ к научной работе! Это будет либо прямая ссылка как в данном случае https://sci-hub.se/https://www.sciencedirect.com/science/article/abs/pii/S095070511830621X, либо ссылка на скачивание всего документа, всё зависит от сайта.


Чувствительный тон кожи

Из слива документации я нашел следующий интересный параметр, о котором вряд ли напишут на западе:

imageQualitySensitiveFaceSkinToneSignals

У него нет описания, но в одном из документов, который так же имеет в своем названии Sensitive, есть упоминание Skin Tone Twiddler, который либо отвечает за разнообразие цветов кожи в image поиске, либо как-то связан с улучшением выдачи с разными тонами кожи https://blog.google/products/search/monk-skin-tone-scale/.

Тем не менее, я неоднократно замечал, что выбор картинки с темнокожими давал преимущество в ранжировании картинки, так что для себя я выделил это как еще одно подтверждение своих наблюдений.


PagernakNS

У Олеси увидел про PagerankNS. Это наиболее свежий вариант Pagerank, который используют в Google. Описание есть в этом патенте: https://patents.google.com/patent/US9953049B1/en

Если кратко, то замеряется расстояние до seed pages. Видимо, это какой-то избранный лист страниц, от которых и считают наиболее короткий путь.


Судя по этому документу Google хакнутые сайты называет "Muppet".
С другой стороны несколько раз в других доках упоминается Spam Cookbook, так что "пироги" бы лучше подошли 😃


GoogleApiContentWarehouse040.zip
13.4Mb
Выгрузка слива

Пока гипотеза такая, что предыдущая версия документации случайно утекла на Github со всеми "секретными" данными. Я выгрузил эту версию wget'ом, может кому-то понадобится.


Слив документации команды поиска Google

Rand Fishkin поделился в блоге, что с ним связался анонимный источник, который утверждал, что имеет доступ к сливу документации к API от внутреннего подразделения поиска Google. В дальнейшем этот источник показал сам слив, включающий 2500 страниц документации с 14014 атрибутов из Content API Warehouse. В истории документов указано, что код был залит на Github 27 мар 2024-го и пробыл там до 7 мая 2024.

Чтобы убедиться в достоверности, Rand Fishkin связался с более технически прошаренным Mike King, который подтвердил, что вероятно это действительно документация от внутренней команды поиска Google.

Mike King сделал подробный разбор этих документов у себя на сайте, рекомендую ознакомиться:

https://ipullrank.com/google-algo-leak

Update:

Ссылка на документацию: https://hexdocs.pm/google_api_content_warehouse/api-reference.html


🔁Регулярные выражения для поиска с исключением

Очень часто сеошнику необходимо удалить все строки, кроме тех, что имеют какое-то вхождение подстроки.

Один из быстрых и доступных способов - это использование замены с помощью регулярного выражения в текстовом редакторе.

Для примера используем вхождение "string".

Найти и заменить все строки, кроме:

- Начинающихся со string
^(?!string).*$

- Заканчивающихся на string
^.*(?
- Содержащих string
^(?!.*string).*$

- Равных string
^(?!string$).*$

Найти и заменить пустые строки вы можете в зависимости от вашей операционной системы с помощью регулярок:
^\n
или
^\r\n

ℹ️ Если вы не знаете, что такое регулярное выражение, загуглите возможность использования его в вашем текстовом редакторе (Notepad++, Sublime и т.д.)


Злоупотребление репутацией сайта

Злоупотребление репутацией происходит, когда сторонние страницы публикуются с малым или без какого-либо надзора или участия владельца сайта, с целью манипулирования ранжированием за счет использования высокого ранга домена. Такие страницы включают в себя спонсорские, рекламные, партнерские или другие, которые обычно отличаются от основной цели сайта и предоставляют мало или совсем не приносят пользы пользователям.

Примеры:

🔸 Образовательный сайт, размещающий страницу с обзорами быстрых займов, написанными сторонними лицами, которые распространяют эту страницу по всему интернету, с целью манипулирования ранжированием.
🔸 Медицинский сайт, на котором размещена страница о "лучших казино", созданная с целью манипулирования ранжированием, с малым участием или без участия владельца сайта.
🔸 Сайт рецензий на фильмы, на котором размещены сторонние страницы на темы, которые были бы странными для пользователей сайта (такие как "способы покупки подписчиков на сайтах социальных сетей", "лучшие сайты гадалок", и "лучшие сервисы написания эссе"), где цель заключается в манипулировании ранжированием.
🔸 Спортивный сайт, на котором размещена сторонняя страница об "обзорах добавок для тренировок", при этом редакционный состав спортивного сайта имел мало участия или совсем не участвовал в контенте, и основная цель размещения страницы - манипулирование ранжированием.
🔸 Новостной сайт, размещающий сторонние купоны, с малым или без участия сайта, и где основная цель - манипулирование ранжированием.

Если вы размещаете страницы, нарушающие эту политику, исключите этот контент из индексации поисковой системы.

Примеры, которые НЕ считаются злоупотреблением:

🔸 Сайты служб новостей или служб пресс-релизов
🔸 Новостные публикации, имеющие синдицированные новостной контент из других новостных публикаций
🔸 Сайты, предназначенные для создания контента пользователями, такие как форумы или разделы комментариев
🔸 Колонки, мнения, статьи и другие редакционные материалы, где есть тесное участие или рецензирование со стороны владельца сайта
🔸 Сторонний контент (например, страницы типа "advertorial" или "нативная реклама"), созданный при тесном участии владельца сайта, где цель состоит в том, чтобы делиться контентом напрямую с читателями (например, через продвижение в самом издании), а не размещать контент для манипулирования ранжированием
🔸 Встраивание сторонних рекламных блоков на странице или использование партнерских ссылок на всей странице, в соответствии с правилами для ссылок
🔸 Купоны, размещенные с тесным участием владельца сайта


Апдейты и новые правила в отношении спама

Если кто еще не видел, то гугл анонсировал сразу два апдейта - Core и Spam.
Больше всего внимание привлекает новая политика в отношении спама. К сожалению, дорвейщики слишком привлекли внимание Google'ров в прошлом году.

Злоупотребление Expired-доменами

Злоупотребление заключается в покупке истекшего доменного имени и его повторном использовании в основном с целью манипулирования ранжирование за счет размещения контента с малой ценностью или ценность контента отсутствует. Примеры:

🔸 Affiliate-сайт на домене, ранее использовавшемся государственным агентством
🔸 Продажа коммерческих медицинских продуктов на сайте, ранее использовавшемся некоммерческой медицинской благотворительной организацией
🔸 Контент, связанный с казино, на сайте бывшей начальной школы

Злоупотребление масштабируемым-контентом

Злоупотребление созданием контента в больших масштабах происходит, когда множество страниц генерируется с первостепенной целью манипулирования ранжированием, а не для помощи пользователям. Эта практика злоупотребления обычно сосредоточена на создании большого количества неоригинального контента, который мало чем полезен для пользователей, независимо от того, как он создан.

Примеры:

🔸 Использование инструментов генеративного ИИ или других похожих инструментов для генерации множества страниц без добавления ценности для пользователей
🔸 Скрейпинг лент, результатов поиска или другого контента для генерации множества страниц (включая автоматизированные изменения, такие как использование синонимов, перевод или другие техники), где пользователю предоставляется мало ценности.
🔸 Объединение контента с разных веб-страниц без добавления ценности
🔸 Создание множества сайтов с целью скрыть масштабы
🔸 Создание множества страниц, где содержание малоценно для читателя, но содержит ключевые слова для поиска

Если вы размещаете такой контент на своем сайте, исключите его из Поиска.

Продолжение в след. посте.


Similarweb прислали письмо о запуске Backlink Analytics tool. Еще один инструмент для проверки ссылок в копилочку.


Код считающий FWR, TTR и FRE

Написал код, который считает для английского текста Function Word Ratio, Type-Token Ratiо и Flesch Reading Ease.


!pip install spacy_syllables
!python -m spacy download en_core_web_sm

import spacy
from spacy_syllables import SpacySyllables

# Load the spaCy model
nlp = spacy.load('en_core_web_sm')
nlp.add_pipe('syllables', after='tagger')

def calculate_fwr_ttr_fre(text):
# Process the text with spaCy to tokenize and apply other NLP tasks
doc = nlp(text.lower())

# Count total words, sentences, syllables, and function words
total_words = len(doc)
total_sentences = len(list(doc.sents))
total_syllables = sum(token._.syllables_count for token in doc if token._.syllables_count is not None)
function_words_count = sum(token.is_stop for token in doc)

# Calculate Function Words Ratio
fwr = function_words_count / total_words if total_words > 0 else 0

# Calculate Type-Token Ratio
unique_words = set(token.text for token in doc)
ttr = len(unique_words) / total_words if total_words > 0 else 0

# Calculate Flesch Reading Ease
fre = (206.835 - 1.015 * (total_words / total_sentences) - 84.6 * (total_syllables / total_words)) if total_words > 0 and total_sentences > 0 else 0

return fwr, ttr, fre

# Change filename in code line below
with open('filename.txt', 'r') as file:
# Read the contents of the file
text = file.read()
fwr, ttr, fre = calculate_fwr_ttr_fre(text)
print("Function Words Ratio:", fwr)
print("Type-Token Ratio:", ttr)
print("Flesch Reading Ease:", fre)


В системе должна быть установлена библиотека spacy. Либо вы можете воспользоваться ссылкой на Colab и запустить скрипт в облаке Google.

20 ta oxirgi post ko‘rsatilgan.