Java | Блокировка сообщений с матом

Java | Блокировка сообщений с матом

Тема в разделе Сервера, плагины Minecraft создана пользователем dxdrillbassx
dxdrillbassx Автор темы
Шаг 1: Добавьте Stanford CoreNLP в свой плагин.
Во-первых, вам нужно будет добавить библиотеку Stanford CoreNLP в ваш плагин. Вы можете сделать это, добавив следующую зависимость к вашему файлу pom.xml(если вы используете Maven) или вашему файлу build.gradle(если вы используете Gradle):

Код:
 <!-- Maven -->
<dependency>
    <groupId>edu.stanford.nlp</groupId>
    <artifactId>stanford-corenlp</artifactId>
    <version>4.2.2</version>
</dependency>

<!-- Gradle -->
dependencies {
    implementation 'edu.stanford.nlp:stanford-corenlp:4.2.2'
}

Шаг 2: Инициализируйте Stanford CoreNLP.
Далее вам нужно инициализировать библиотеку Stanford CoreNLP в вашем плагине. Вы можете сделать это, создав новый экземпляр класса StanfordCoreNLP:

Код:
 import edu.stanford.nlp.pipeline.StanfordCoreNLP;

public class ProfanityFilter {
private StanfordCoreNLP nlp;

public ProfanityFilter() {
nlp = new StanfordCoreNLP();
}
}

Шаг 3: Проанализируйте сообщения чата.
Теперь вам нужно проанализировать сообщения чата, используя библиотеку Stanford CoreNLP. Вы можете сделать это, создав новый метод, который принимает сообщение чата в качестве входных данных и возвращает логическое значение, указывающее, содержит ли сообщение ненормативную лексику:

Код:
 public boolean containsProfanity(String message) {
// Предварительно обработайте сообщение, чтобы удалить обходные символы
String preprocessedMessage = message.replaceAll("[^a-zA-Zа-яА-Я]", "");
preprocessedMessage = preprocessedMessage.toLowerCase();

// Обозначьте сообщение
Annotation annotation = new Annotation(preprocessedMessage);
nlp.annotate(annotation);

// Получите анализ настроений
SentimentAnalysis sentiment = annotation.get(SentimentAnalysis.class);

// Проверьте, является ли текст негативным (т.е. содержит ненормативную лексику).
if (sentiment.getSentimentType().equals(SentimentType.NEGATIVE)) {
return true;
}

// Проверьте, не повторяются ли символы
if (message.matches(".*([а-яА-Яa-zA-Z])\\1{2,}.*")) {
return true;
}

// Проверьте наличие символов с диакритическими знаками
if (message.matches(".*[а-яА-Яa-zA-Z][].*")) {
return true;
}

return false;
}

Шаг 4: Блокируйте непристойные сообщения.
Наконец, вам нужно заблокировать нецензурные сообщения в вашем плагине. Вы можете сделать это, создав новый метод, который принимает сообщение чата в качестве входных данных и блокирует сообщение, если оно содержит ненормативную лексику:

Код:
 public void onChatMessage(ChatMessageEvent event) {
String message = event.getMessage();
if (containsProfanity(message)) {
event.setCancelled(true);
// Необязательно: отправьте игроку предупреждающее сообщение
event.getPlayer().sendMessage("Profanity is not allowed in this server!");
}
}

Сверху