Наиболее эффективный способ категоризации, когда набор тегов не определенPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Наиболее эффективный способ категоризации, когда набор тегов не определен

Сообщение Anonymous »

Создавая систему категоризации, я столкнулся с проблемой, которую пытаюсь найти решение. В моей системе есть теги, используемые для категоризации, но с оговоркой, что со временем будет добавлено больше тегов и категорий.
Вместо того, чтобы использовать векторизатор слов и 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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