As it stands, the only way to build your culture effectively is by building up a lot of villages and holding a lot of celebrations.
My suggestion is simple.
For every unit killed in offense and in defense, grant the player who is responsible for that kill 1 culture point.
So if you attack someone and kill 2000 def troops and you lose 1500 off troops, then you gain 2000 culture points, and whoever lost their def troops will gain 1500 culture points.
A couple of exceptions would be that you can't gain culture points from killing troops from the same kingdom and you can't get any (or reduced) culture points for killing robber hideouts or robber camps.
Why do I think this is a good idea?
Sometimes players end up in the middle of an earlygame war, and because of this they end up being heavily impeded in their cultural growth since they are forced to spend all their resources on building troops.
These circumstances makes it so that these players who fought for weeks on end will end up a lot weaker than players who were left alone and were free to develop their villages as they saw fit, even though the players that were on the front line have made a much bigger impact on the server as a whole. I feel like this is the opposite way of how it should be. The player who fought from day 1 is the one who has gained all the fame and notoriety, so their culture should be way more known, widespread, and thus more developed. There is a reason why none of the largest cultures in history is one that just wanted peace with everyone, but instead it was the ones who were waging war.