Создавая систему категоризации, я столкнулся с проблемой, которую пытаюсь найти решение. В моей системе есть теги, используемые для категоризации, но с оговоркой, что со временем будет добавлено больше тегов и категорий.
Вместо того, чтобы использовать векторизатор слов и MultinomialNB, я решил создать таблицу перевода, в которой теги приравниваются к категориям, а теги/категории могут быть добавлены со временем.
Это теоретически решило две мои проблемы, такие как 1: у меня нет данных для обучения (буквально цель состоит в том, чтобы начать с нуля и иметь категоризацию как функцию по мере добавления данных), только новые записи со связанными тегами и 2: она масштабируема.
Вопрос в том, как взвесить такую систему? добавленные теги не могут быть такими же, как у меня сейчас, поскольку только потому, что тег является частью категории, он не на 100% представляет эту категорию. Я мог бы установить его вручную, но это может занять много времени.
А теги к категории добавляются при вводе новых данных. Это просто так. Единственное, что меня поддерживает, так это то, что у классификации есть описания.
вот код ниже
unique_categories_with_tags = {"FPS" : {"First Person": 1,
"shooting": 1,
"weapons": 1,}
"JRPG": {"Japanese": 1,
"Role Playing": 1,
"Anime style": 1,
"Stat building": 1,
"weapons": 1,
"exploration": 1},
"adventure": {"exploration": 1,
"platforming": 1,
"weapons": 1,
"open world: 1}
descriptions = {"FPS": """FPS stands for first person shooter where players in the first
person perspective run around set environments and shoot at
opponents. Weapons can range from guns, bows, and other distance
style weapons""",
"JRPG": """JRPG stands for Japanese Roleplaying Game, and is essentially, an
RPG designed and produced in Japan. JRPGs are typically identified
as having leveling systems, anime aesthetics, and have themes about
killing god with the power of friendship."""}
Вот код для построения системы прогнозирования. В настоящее время у меня есть веса, основанные на частоте в словаре. Чем больше раз появляется тег, тем он слабее.
class PredSystem:
weights: pd.DataFrame
def build_weights(self, weight_dictionary: Dict) -> None:
keys = list(data.keys())
unique_tags = []
for cat in data:
for entry in data[cat]:
unique_tags.append(entry)
unique_tags = list(set(unique_tags))
translation_table = np.zeros([len(unique_tags),len(keys)])
translation_df = pd.DataFrame(data=translation_table,index=unique_tags,columns=keys)
for data_weights in data:
weight_keys = list(data[data_weights].keys())
weight_df = pd.DataFrame(list(data[data_weights].values()), index=weight_keys,
columns=[data_weights])
translation_df.update(weight_df)
translation_df_weighted = translation_df.div(translation_df.sum(axis=1),axis=0)
self.weights = translation_df_weighted
def predict_classification(self, keywordTags: List) -> str:
predictions = self.weights.loc[keywordTags,:].sum().sort_values(ascending=False)
return predictions.keys()[0]
для запуска кода
test_tags = ["Japanese","weapons","exploration","shooting"]
PS = PredSystem()
PS.build_weights(unique_categories_with_tags )
PS.predict_classification(test_tags)
Подробнее здесь: https://stackoverflow.com/questions/786 ... ot-defined
Наиболее эффективный способ категоризации, когда набор тегов не определен ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Symfony2 — Настройка облака тегов с использованием веса тегов для популярных тегов
Anonymous » » в форуме Php - 0 Ответы
- 83 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Какова правильная логика классификации и категоризации изображений с помощью Python?
Anonymous » » в форуме Python - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-