Как преобразовать модель ML в приложение для Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как преобразовать модель ML в приложение для Android?

Сообщение Anonymous »

Я хочу создать простое мобильное приложение, которое определяет диалект языка, на котором вводит пользователь. К счастью, я думаю, что моя серверная часть работает, поскольку я проверяю URL-адрес, заданный pycharm в Postman, чтобы проверить вывод, и, к счастью, почтальон может предсказать диалект язык, на котором вводит пользователь.
Задача:
Я действительно пытался дать тот же результат, что и почтальон, в своем мобильном приложении Android Studio. Но, к сожалению, я получаю такое же сообщение об ошибке. java.net.ConnectException: не удалось подключиться к /127.0.0.:***
это мой код студии Android Основная активность:

Код: Выделить всё

public class MainActivity extends AppCompatActivity {

EditText inputuser;
Button detectnow;
TextView result;
String url = "http://127.0.0.1:8080/predict";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);

inputuser = findViewById(R.id.input);
detectnow = findViewById(R.id.translate);
result = findViewById(R.id.result);

detectnow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Get the user input text
String userInput = inputuser.getText().toString();

// Create JSON object with the user input
JSONObject jsonBody = new JSONObject();
try {
jsonBody.put("text", userInput);
} catch (JSONException e) {
e.printStackTrace();
}

// Create a request queue
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);

// Create a JSON object request
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, jsonBody,
new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
try {
// Get the predicted dialect from the response
String predictedDialect = response.getString("predicted_dialect");

// Set the predicted dialect to the result TextView
result.setText("Predicted Dialect: "  + predictedDialect);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Handle errors
Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});

// Add the request to the request queue
queue.add(jsonObjectRequest);
}
});
}
}
это мой внутренний код на Python:

Код: Выделить всё

    from flask import Flask, request, jsonify
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.preprocessing import LabelEncoder

app = Flask(__name__)

# Load the dataset and preprocess it
df_dialect = pd.read_csv("dialect_list_balance.csv").dropna()
le = LabelEncoder()
vectorizer = CountVectorizer()
bag = vectorizer.fit_transform(df_dialect['sentence'])
features = bag.toarray()
vocab = vectorizer.get_feature_names_out()
df_bow = pd.DataFrame(features, columns=vocab)
df_bow['dialect_class'] = le.fit_transform(df_dialect['dialect'])

# Train the model
X = df_bow.iloc[:, :-1]
y = df_bow['dialect_class']
gb_clf = GradientBoostingClassifier()
gb_clf.fit(X, y)

@app.route('/predict', methods=['POST'])
def predict():
# Get the input text from the request body
input_text = request.json.get('text')

# Preprocess the input text
input_bag = vectorizer.transform([input_text])
input_features = input_bag.toarray()

# Predict the dialect of the input text
prediction = gb_clf.predict(input_features)

# Decode the predicted label to dialect class
predicted_dialect = le.inverse_transform(prediction)[0]

# Return the predicted dialect as a JSON response
return jsonify({"predicted_dialect": predicted_dialect})

if __name__ == '__main__':
app.run(debug=True, port=8080)
Решения, которые я пробовал, но они не сработали:
Последнее обновление: я пытался изменить URL-адрес строки в MainActivity. в мою конфигурацию ipv4! но потом ошибка исчезла, но мое мобильное приложение просто вышло из виртуального эмулятора. Я не думаю, что это связано с производительностью моего устройства, поскольку оно работает с рекомендованным объемом оперативной памяти 16 ГБ. Теперь я снова застрял.
Очистите DNS
Подключитесь к указанному порту
зайдите в настройки браузера
выключите брандмауэр
chatgpt
решения, которые я ищу
Видео на YouTube, на которое я ссылаюсь для этого проекта

Подробнее здесь: https://stackoverflow.com/questions/785 ... ndroid-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»