Create clusters based on specific keywords
Methods for generating fuzzy (or soft) rather than crisp clusters may be applicable to your problem. One implementation for soft clustering in Python is a variant of DBSCAN called HDBSCAN. This link explains soft clustering using this algorithm. In soft clustering each point's similarity to each cluster can be measured. If a point is sufficiently similar to multiple clusters, then the clusters may overlap in the feature space.
There are also algorithms for explicitly generating overlapping cluster assignments from the literature such as:

In Overlapping Correlation Clustering (Bonchi 2013) each point may be assigned to multiple clusters based on pairwise similarities between points in the input set.
In Model-based Overlapping Clustering (Banerjee 2005) a generative approach is used to modeling the clusters.

For a survey of overlapping clustering approaches, see Overlapping Clustering: A review (Baadel 2016).